- create or copy ros project multirobot_nv under ~/catkin_ws/src/
$ catkin_create_pkg launch_robot
$ cd launch_robot
$ cp all dirs and files in this repo
- add new node for each robot in startall.launch, by giving the robot namesapce and intial (x,y,a)
<include file="$(find multirobot_nv)/launch/start_namespace.launch">
<arg name="robot_namespace" value="tb3_0" />
<arg name="tb3_0_init_x" value="0.0" />
<arg name="tb3_0_init_y" value="0.0" />
<arg name="tb3_0_init_a" value="0.0" />
</include>
<include file="$(find multirobot_nv)/launch/start_namespace.launch">
<arg name="robot_namespace" value="tb3_1" />
<arg name="tb3_1_init_x" value="10.0" />
<arg name="tb3_1_init_y" value="10.0" />
<arg name="tb3_1_init_a" value="0.0" />
</include>
...
roslaunch multirobot_nv startall.launch
#start rosbot with auto startrobot.service at boot or manually at rosbot node
sudo systemctl start startrobot.service
#start map server, amcl and movebase of specific rosbot, like 'rosbot1'
roslaunch multirobot_nv start_rosbot_test.launch
- waffle_pi
- waffle
- burge
- rosbot2
- rosbot2_pro
-
read
xml_datacontent from startall.launch -
for first
includenode, set attribute 'map_file' value as the map file path<include file="$(find multirobot_nv)/launch/start_map.launch"> <arg name="map_file" value="$(env HOME)/map/map.yaml" /> </include> -
if the robot is turtlebot, read 1st 'include' node from:
template_start_turtlebot_namespace.launch, setting corresponding value for each attributes, append toxml_data<include file="$(find multirobot_nv)/launch/start_turtlebot.launch"> <arg name="robot_namespace" value="tb3_0" /> <arg name="tb3_0_init_x" value="0.0" /> <arg name="tb3_0_init_y" value="0.0" /> <arg name="tb3_0_init_a" value="0.0" /> <arg name="bot_model" value="waffle_pi" /> </include> -
if the robot is rosbot, read 1st 'include' node from:
template_start_rosbot_namespace.launch, setting corresponding value for each attributes, append toxml_data<include file="$(find multirobot_nv)/launch/start_turtlebot.launch"> <arg name="robot_namespace" value="rosbot1" /> <arg name="rb2_0_init_x" value="0.0" /> <arg name="rb2_0_init_y" value="0.0" /> <arg name="rb2_0_init_a" value="0.0" /> </include>
mkdir ~/ros_workspace
mkdir ~/ros_workspace/src
cd ~/ros_workspace/src
catkin_init_workspace
sudo apt update
git clone https://github.com/husarion/rosbot_description.git
git clone https://github.com/husarion/rosbot_ekf.git
#Install dependencies
cd ~/ros_workspace
rosdep install --from-paths src --ignore-src -r -y
sudo apt-get install ros-kinetic-robot-localization
#compile
cd ~/ros_workspace
catkin_make
#install enviroment
nano ~/.bashrc
# add: export ~/ros_workspace/devel/setup.sh
source ~/.bashrc
#copy rosbot config yamls to multirobot_nv package
cd ~/catkin_ws/src/multirobot_nv/param
git clone https://github.com/husarion/tutorial_pkg.git
cd turorial_pkg
mv config/ ../rosbot_param
cd ..
rm -rf turorial_pkg