LoginSignup
5
2

More than 5 years have passed since last update.

OSRFの自動車シミュレーションcar_demoを動かすまでの奮闘

Posted at

 環境

Ubuntu 16.04
ROS Kinetic
Gazebo9 (7)

 前提

元記事の説明を前提にしているのでこちらからご覧ください。
元記事とのアプローチの異なる点についてまとめていきます。

car_demoを落としてきて、catkinワークスペースにファイルをまとめておいておいてからスタート。

Gazeboのインストールまわり

ROS KineticではGazeboはver7を使っていますが、本シミュレーションではver8が必要です。
なお、筆者はこの発展のcitysimから始めたのでgazebo9を使っています。
image.png

gazebo7を削除せずに(?)gazebo9のインストール

元記事ではgazebo7まわりを削除していましたが削除しなくてもインストール可能でした。(実際は無効にされてるのかもしれない)

参考にした記事は以下の通り。
- gazebo9 in ros
- gazebo intall

とりあえず手順をまとめると以下の通りになります。

sudo sh -c 'echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stable `lsb_release -cs` main" > /etc/apt/sources.list.d/gazebo-stable.list'

wget http://packages.osrfoundation.org/gazebo.key -O - | sudo apt-key add -

sudo apt-get update

sudo apt-get install ros-kinetic-gazebo9-ros-pkgs
sudo apt-get install ros-kinetic-gazebo9-ros-control

コンパイルエラーへの対処

ignition-msgs0まわり

コンパイルするとignition-msgs0がないと言われます。

まずは依存関係の解決。

sudo apt-get install libprotobuf-dev protobuf-compiler libprotoc-dev libignition-math3-dev

次に該当ファイルをbitbucketのサイトからclone、checkoutする。超絶余談ですがHTTPで作業していたのでこの時点でSSHに変更せざるを得なくなりました。該当記事はこちら

hg clone ssh://hg@bitbucket.org/ignitionrobotics/ign-msgs
cd ign-msgs
hg pull && hg update ign-msgs0

buildする。

mkdir bulid
cd build
cmake ..
sudo make install

gazeboのバージョン依存とかに関わる項

元記事にあるとおり、gazebo9でやっているのでバージョンの変更箇所でやはり怒られます。

でもGazeboのバージョンは共存できるってここにあるしgazebo8もいれちゃおうとしましたが諸々のエラーが出て断念。

仕方がないのでソースコードをアップグレードしました。gazebo_ros_block_laser.cppにおいて以下の変更を行います。
エラーの箇所を探してください。

  • 変更1
//last_update_time_ = this->world_->GetSimTime();
last_update_time_ = this->world_->SimTime();
  • 変更2
void GazeboRosBlockLaser::OnStats( const boost::shared_ptr<msgs::WorldStatistics const> &_msg)
{
  this->sim_time_  = msgs::Convert( _msg->sim_time() );

  //math::Pose pose;
  //pose.pos.x = 0.5*sin(0.01*this->sim_time_.Double());
  gzdbg << "plugin simTime [" << this->sim_time_.Double() << "] update pose [" << 0.5*sin(0.01*this->sim_time_.Double()) << "]\n";
}

実行

joystickは接続していないのでコントローラで制御できるわけではないですが、キーボード上で一応操作できました。

source ~/catkin_ws/devel/setup.bash
roslaunch car_demo demo.launch

ちょっと道幅が広すぎますね。さすがアメリカンといった感じ。(???)
car_demo.png

ROSでもきちんと表示されてますね。
image.png

自己位置同定とかも走っているのでlaunchファイルの詳細について暇があったら見ていきます。

どうやって制御しているか?

cmd_velで制御しているのかと思いきやおそらく/joyの値を用いているかと思いきや該当するtopicが配信されてない...
どうやって制御しているのかよく調べておきます。これとか参考になるかな?

$ rostopic list
/amcl_pose
/base_pose_ground_truth
/clicked_point
/clock
/diagnostics
/gazebo/link_states
/gazebo/model_states
/gazebo/parameter_descriptions
/gazebo/parameter_updates
/gazebo/set_link_state
/gazebo/set_model_state
/initialpose
/joint_states
/joy
/move_base_simple/goal
/particlecloud
/prius
/prius/back_camera/image_raw
/prius/back_camera/image_raw/compressed
/prius/back_camera/image_raw/compressed/parameter_descriptions
/prius/back_camera/image_raw/compressed/parameter_updates
/prius/back_camera/image_raw/compressedDepth
/prius/back_camera/image_raw/compressedDepth/parameter_descriptions
/prius/back_camera/image_raw/compressedDepth/parameter_updates
/prius/back_camera/image_raw/theora
/prius/back_camera/image_raw/theora/parameter_descriptions
/prius/back_camera/image_raw/theora/parameter_updates
/prius/back_camera/parameter_descriptions
/prius/back_camera/parameter_updates
/prius/back_camera_info
/prius/back_sonar/left_far_range
/prius/back_sonar/left_middle_range
/prius/back_sonar/right_far_range
/prius/back_sonar/right_middle_range
/prius/center_laser/scan
/prius/front_camera/image_raw
/prius/front_camera/image_raw/compressed
/prius/front_camera/image_raw/compressed/parameter_descriptions
/prius/front_camera/image_raw/compressed/parameter_updates
/prius/front_camera/image_raw/compressedDepth
/prius/front_camera/image_raw/compressedDepth/parameter_descriptions
/prius/front_camera/image_raw/compressedDepth/parameter_updates
/prius/front_camera/image_raw/theora
/prius/front_camera/image_raw/theora/parameter_descriptions
/prius/front_camera/image_raw/theora/parameter_updates
/prius/front_camera/parameter_descriptions
/prius/front_camera/parameter_updates
/prius/front_camera_info
/prius/front_left_laser/scan
/prius/front_right_laser/scan
/prius/front_sonar/left_far_range
/prius/front_sonar/left_middle_range
/prius/front_sonar/right_far_range
/prius/front_sonar/right_middle_range
/prius/left_camera/image_raw
/prius/left_camera/image_raw/compressed
/prius/left_camera/image_raw/compressed/parameter_descriptions
/prius/left_camera/image_raw/compressed/parameter_updates
/prius/left_camera/image_raw/compressedDepth
/prius/left_camera/image_raw/compressedDepth/parameter_descriptions
/prius/left_camera/image_raw/compressedDepth/parameter_updates
/prius/left_camera/image_raw/theora
/prius/left_camera/image_raw/theora/parameter_descriptions
/prius/left_camera/image_raw/theora/parameter_updates
/prius/left_camera/parameter_descriptions
/prius/left_camera/parameter_updates
/prius/left_camera_info
/prius/right_camera/image_raw
/prius/right_camera/image_raw/compressed
/prius/right_camera/image_raw/compressed/parameter_descriptions
/prius/right_camera/image_raw/compressed/parameter_updates
/prius/right_camera/image_raw/compressedDepth
/prius/right_camera/image_raw/compressedDepth/parameter_descriptions
/prius/right_camera/image_raw/compressedDepth/parameter_updates
/prius/right_camera/image_raw/theora
/prius/right_camera/image_raw/theora/parameter_descriptions
/prius/right_camera/image_raw/theora/parameter_updates
/prius/right_camera/parameter_descriptions
/prius/right_camera/parameter_updates
/prius/right_camera_info
/rosout
/rosout_agg
/tf
/tf_static
5
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2