これまでに習得した技術などを使って、下記の動作を実現して下さい。
- A-1 直進し、正面に壁が近づいたら停止する
- A-2 壁に沿って走行する
- ヒント:横方向の距離データが一定になるように、角速度にフィードバックする。
さらに余裕がある場合、下記の動作を実現して下さい。
- A-2 曲がり角を含む壁に沿って走行する
- A-3 前を歩いている人について走行する
- ヒント:正面方向にある物体の方向に向かうように角速度にフィードバックしつつ、距離を一定に保つように速度にフィードバックする。
これまでにセミナーで取り扱った内容のおさらいに、いくつかの演習を用意しています。地図生成やnavigationパッケージを利用した自律ナビゲーションに興味があれば、課題Bから進めても構いません。
これまでに習得した技術などを使って、下記の動作を実現して下さい。
さらに余裕がある場合、下記の動作を実現して下さい。
これまでに習得した技術などを使って、下記の動作を実現して下さい。
geometry_msgs::PoseStamped goal_pose; goal_pose.pose.orientation = tf::createQuaternionMsgFromYaw(3.14/*[rad]*/);
// コードの先頭
#include <tf/transform_listener.h>
// rsj_robot_test_nodeクラスのprivate:の後に
tf::TransformListener tf_listener_;
// 座標x, y, yawを取得したい場所で
double x, y, yaw;
try
{
tf::StampedTransform trans;
tf_listener_.waitForTransform("map", "base_link",
ros::Time(0), ros::Duration(0.5));
tf_listener_.lookupTransform("map", "base_link",
ros::Time(0), trans);
x = trans.getOrigin().x();
y = trans.getOrigin().y();
yaw = tf::getYaw(trans.getRotation());
}
catch(tf::TransformException &e)
{
ROS_WARN("%s", e.what());
}