This project is a project for COMPUTER PROJECT DESIGN, a required subject of NCKU CSIE (Department of Computer Science and Information Engineering, National Cheng Kung University). The topic is "Route Planning Based on Communication between Virtual and Physical Network Interface: Unmanned Hotel System Based on Robot Operating System". In chinese it is named 「虛網實規:基於ROS建立之無人旅店系統」. The advising professor is Chuan-Ching Sue (蘇銓清) professor, and the members of this team is 黃柏瑄、洪瑞隆、鍾日超. The main function is to let virtual and physical move synchronously and we design three scenarios:
- Press the button in the room, then robot takes some needs and go to the specific room.
- Press the button in the room, then robot comes and navigates to the specific destination.
- Let the robot scan QRcode and robot navigates to the specific destionation.
- Ubuntu 14.04
- ROS Indigo
catkin_ws/
└── src/
└── project/ ← this git repository
├── robot_control_pkg/ ← package
│ ├── CMakeLists.txt
│ ├── launch/
│ ├── package.xml
│ └── src/
├── robot_description_pkg/ ← package
├── robot_navigation_pkg/ ← package
├── robot_simulation_pkg/ ← package
├── central_control_pkg/ ← package
├── robot_converter_pkg/ ← package
├── zbar_ros_pkg/ ← package
├── web_pages/
├── run.sh
├── launch_all.sh
├── LICENSE
└── README.md
$ cd ~/catkin_ws/src/
$ git clone https://github.com/YI-LING-BA-JI-JHUAN-TI-SHENG/project.git
$ cd ~/
$ git clone https://github.com/YI-LING-BA-JI-JHUAN-TI-SHENG/rosev3.git
xxx.xxx.xxx.xxx
represent the static IP address for master.
- master IP in main computer.
$ vim /etc/hosts
xxx.xxx.xxx.xxx [your-pc-name]
xxx.xxx.xxx.xxx master
192.168.1.111 robot
192.168.1.101 ev3dev
$ vim ~/.bashrc # need to close all terminals after setting.
export ROS_MASTER_URI=http://master:11311/
export ROS_HOSTNAME=xxx.xxx.xxx.xxx
- set docker.
$ vim ~/rosev3/gripp3r/.env
MASTER_URI=http://xxx.xxx.xxx.xxx:11311
- set EV3 robot.
$ ssh [email protected]
$ vim /etc/hosts
192.168.1.111 robot
xxx.xxx.xxx.xxx master
- set Raspberry Pi 3.
$ ssh [email protected]
$ vim /etc/hosts
192.168.1.108 ubiquityrobot ubiquityrobot.local
xxx.xxx.xxx.xxx master
- Plug in the RPi3 connected to uvc camera with usb cable.
- Open EV3 and make sure that it connected to AP.
$ cd ~/catkin_ws/
$ catkin_make
- Change to project directory.
$ cd ~/catkin_ws/src/project/
- Run
run.sh
.
$ sh run.sh
- Input sudo password in docker tab.
- Run
ev3_manager
in ev3 tab, and wait connection. - Run
launch_all.sh
in Terminal tab.
$ sh launch_all.sh
- Input password in RPi3 uvc tab, and run
rosrun uvc_camera uvc_camera_node
.
$ rosrun uvc_camera uvc_camera_node
- Open web server by using chrome plugin.
- choose the
~/catkin_ws/src/web_pages/demo1/
folder.
$ roslaunch robot_simulation_pkg simulation.launch
$ roslaunch robot_simulation_pkg simulation_one_robot.launch
$ roslaunch robot_control_pkg keyboard_teleop.launch
$ roslaunch rosbridge_server rosbridge_websocket.launch
$ roslaunch robot_simulation_pkg simulation.launch
- Open web page and input IP address.
- Need to install zbar
sudo apt-get install ros-indigo-zbar-ros
$ roslaunch zbar_ros_pkg open_zbar.launch
- Need to install zbar
sudo apt-get install ros-indigo-zbar-ros
$ roslaunch zbar_ros_pkg multi_open_zbar.launch
$ roslaunch robot_simulation_pkg simulation_one_robot.launch
$ roslaunch robot_navigation_pkg amcl.launch
$ rviz
$ rostopic pub /move_base_simple/goal geometry_msgs/PoseStamped '{header: {stamp: now, frame_id: "map"}, pose: {position: {x: 1.0, y: 0.0, z: 0.0}, orientation: {w: 1.0}}}'
$ roslaunch robot_simulation_pkg simulation.launch
$ roslaunch robot_navigation_pkg multi_navigation.launch
$ rviz
$ rostopic pub /robot1/move_base_simple/goal geometry_msgs/PoseStamped '{header: {stamp: now, frame_id: "map"}, pose: {position: {x: 1.0, y: 0.0, z: 0.0}, orientation: {w: 1.0}}}'
$ rostopic pub /robot2/move_base_simple/goal geometry_msgs/PoseStamped '{header: {stamp: now, frame_id: "map"}, pose: {position: {x: 1.0, y: 0.0, z: 0.0}, orientation: {w: 1.0}}}'
$ roslaunch rosbridge_server rosbridge_websocket.launch
$ roslaunch robot_simulation_pkg simulation_one_robot.launch
$ roslaunch robot_navigation_pkg amcl.launch
$ roslaunch central_control_pkg control.launch
# test
$ rostopic echo /move_base_simple/goal
$ rostopic pub /speaker std_msgs/String 1:a
$ rostopic pub /barcode std_msgs/String 1:_
$ roslaunch central_control_pkg multi_control.launch
# test
$ rostopic echo robot1/move_base_simple/goal
$ rostopic echo robot2/move_base_simpel/goal
# three types of service
$ rostopic pub /speaker std_msgs/String 1:a
$ rostopic pub /speaker std_msgs/String 2:A
$ rostopic pub /robot2/barcode std_msgs/String 3:$
# simulate that robot arrive in destinition
$ rostopic pub robot1/barcode std_msgs/String 1:_
$ rostopic pub robot2/barcode std_msgs/String 1:_
# reset
$ rostopic pub /speaker std_msgs/String _:_
$ rosrun image_view image_view image:=/rrbot/camera1/image_raw
# virtual robot
$ rosrun image_view image_view image:=/robot1/image
# real robot
$ rosrun image_view image_view image:=/robot2/image