===== B3M33MKR: Mobile and and Collective Robotics (winter term 2019/20) ===== ==== Seminars organization ==== * Students are expected to work in teams by two (exceptions allowed after consultation with teacher). * Each group is expected to work with a real robot. * Majority of the work is planned as an **individual work** of the group (you can work anytime the room is available). * Students are expected to **ask** - ask early, ask often. * Teachers will be personally available during the regularly scheduled hours, otherwise over the e-mail (but don't expect answers in order of minutes) * **Charge the robot** every time you stop working with it. * Keep your source code on a version-control system (e.g. git). This way, you can remove commented-out parts of your source code that you'd like to keep "just in case", the version control system will keep a trace of it. ---- ===Introduction=== * {{:courses:b3m33mkr:turtlebot.pdf|slides}} ---- ===Assignments=== * Each team is asked to implement selected algorithms presented on lectures: * Multi-robot motion coordination * {{:courses:b3m33mkr:mkr2018_mrc-slides.pdf|slides}} * {{:courses:b3m33mkr:mkr2018_mrc.tar.gz|Code}} * {{:courses:b3m33mkr:area.tar.gz|Map}} * Kalman filter and Extended Kalman filter for localization * {{:courses:b3m33mkr:labs-slides-kalman-en.pdf|Slides}} * {{:courses:b3m33mkr:kalman-cz.pdf|CZ Slides}} * {{:courses:b3m33mkr:kalman.tar.gz|Code}} * Particle filter for global localization * {{:courses:b3m33mkr:motion-model.tar.gz|Motion model code}} * {{:courses:b3m33mkr:particle_filter.tar.gz|Particle filter code}} * {{:courses:b3m33mkr:particle_filter_ros.tar.gz|Particle filter code for ROS}} * {{:courses:b3m33mkr:pf-slides.pdf|Slides}} * {{:courses:b3m33mkr:videos.zip|Video with motion model demonstration}} ---- ===Getting the seminar credit=== To get the seminar credit, student must: * Participate and actively work at all seminars (up to 2 absences without excuse will be tolerated), * Create a working algorithms solving *all* the tasks, * Present a well-written and documented source code, * Understand the presented solution and source code (each team member). /* {{:courses:a3m33mkr:mkr2014_icp.tar.gz|Code}} z * {{:courses:ae3m33mkr:output.avi|video example}} * Kalman filter and Extended Kalman filter for localization * {{:courses:a3m33mkr:mkr2014_kf-slides.pdf|Slides}} * {{:courses:a3m33mkr:mkr2014_kf.tar.gz|Code}} * Partical filter for global localization * {{mkr2015_pf.tar.gz|Code}} * A SVN repository will be created for each group. It is expected that students will use it regularly. */ ==== How-To Setup your ROS Environment in Singularity ==== * Log into a PC with the diskless operation system. On these systems, your personnal NFS folder will be mounted as ''$HOME''. * ''singularity shell /opt/ros ros''. * ''source /opt/ros/robolab/devel/setup.bash''. * ''export ROS_WORKSPACE=$HOME/ros_kinetic_ws && mkdir -p $ROS_WORKSPACE/src && cd $ROS_WORKSPACE && catkin init && catkin build''. ==== How-To Use The Real Robots ==== To use the turtlebots: * Switch on the base and the onboard PC. * Connect your PC to the wifi ''e210bot''. * Connect to the robot with ''ssh usermap_username@192.168.210.(20+turtlebot_number)''. * ''singularity instance start /opt/ros ros''. * ''tmux''. * In the each new tmux window ''singularity shell instance:%%//%%ros'' then ''source $ROS_WORKSPACE/devel/setup.bash''. * In the first tmux window ''roscore''. ''roslaunch'' itself would run ''roscore'' if no ROS master is detected but this master will be killed when the ''roslaunch'' command finishes (usually with ''Ctrl+C'') and nodes such as rqt or rviz would have to be closed as well. It is then better to run ''roscore'' separately. * In the second tmux window ''roslaunch robolab_bringup turtlebot2.launch camera:=false''. ==== How-To Use the Simulated Robots ==== * ''singularity instance start /opt/ros ros''. * ''singularity shell instance:%%//%%ros'' then ''source $ROS_WORKSPACE/devel/setup.bash''. * ''roslaunch simulator_e130 simulator.launch''. To be on the safe side, it's better to launch the simulation server and possibly the GUI first (''roslaunch simulator_e130 server.launch'', ''roslaunch simulator_e130 gui.launch'') and then the robots (''roslaunch simulator_e130 robots.launch''). This avoid missing robots, especially with more than two robots. * The node ''robot_coordination/robot_node'' can be used to drive the robot, it basically accepts a trajectory as input through services and drives the robot along the trajectory. Launch one ''robot_coordination/robot_node'' for each robot: e.g. ''ROS_NAMESPACE=/robot1 rosrun robot_coordination robot_node __name:=controller''. * Your node must connect to the appropriate services and send the trajectories. An example is given in Python, ''robot_coordination/example_robot_control.py'', and can be launched e.g. with ''rosrun robot_coordination example_robot_control.py _server_namespace:=/robot0''. [[start|Back]] to the course page.