これまでに習得した技術などを使って、下記の動作を実現して下さい。
- 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()); }