Deprecated: Function get_magic_quotes_gpc() is deprecated in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 99

Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 619

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1169

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176
8000 GitHub - kdeyev/xiaomi_bridge: This package bridges the internal communication of a Xiaomi Vacuum Cleaner into ROS messages, provides an URDF model and contains configuration files for the navigation stack.
Nothing Special   »   [go: up one dir, main page]

Skip to content
This repository was archived by the owner on Sep 22, 2022. It is now read-only.
/ xiaomi_bridge Public archive
forked from arne48/xiaomi_bridge

This package bridges the internal communication of a Xiaomi Vacuum Cleaner into ROS messages, provides an URDF model and contains configuration files for the navigation stack.

Notifications You must be signed in to change notification settings

kdeyev/xiaomi_bridge

 
 

Repository files navigation

Xiaomi Vacuum Cleaner ROS Bridge

Introduction

This package bridges between a rooted Xiaomi Vacuum Cleaner, publishes its sensor data, and forwards Twist messages to drive the robot.

Functions

What works

  • Odometry
  • Driving
  • Laser Sensor
  • Cliff Sensor
  • Wall Sensor
  • Front Ultrasonic Sensor
  • Battery Info

What doesn't work

  • Motor Control (Vaccum, Main-Brush, Side-Brush)
  • Bumper
  • Wheel Drop Sensor

Requirements

1. Rooted Vacuum Cleaner: Please use the great work of Dennis Giese and Daniel Wegemer for doing this. Their repository can be found at https://github.com/dgiese/dustcloud.

2. Disable Watchdog for RoboController: On the robot, in "/opt/rockrobo/watchdog/ProcessList.conf" comment out the line "RoboController,setsid RoboController&,1,3,0"

3. Disable Firewall "Drop" rules for Player ports: On the robot, in "/opt/rockrobo/watchdog/rrwatchdoge.conf" comment out the lines "iptables -I INPUT -j DROP -p tcp --dport 6665" and "iptables -I INPUT -j DROP -p udp --dport 6665"

Notice:

The player client libraries are needed for this bridge and are built automatically. They are installed locally using the catkin_devel_prefix. This doesn't require root permissions and keeps the host system clean. Detailed information and how-tos for this library are available here, http://playerstage.sourceforge.net/doc/Player-svn/player

Bridge Node

The node can be started on another computer in the same network as the vacuum cleaner. It connects to the internally used player server for getting sensor data and commanding the robot.

Startup

  1. Make sure the RoboController is not running.
  2. Connect to the robot by ssh and start the RoboController via "/opt/rockrobo/cleaner/bin/RoboController".
  3. Push the "Home" button on the robot to let it search for the dock.
  4. Once the robot keeps moving, kill the RoboController via Ctrl-C
  5. Lift the robot to interrupt its navigation.
  6. Now you should just hear the LaserScanner turning. If so, the robot is ready to be controlled by you.

Details

  • Parameter
    • ~ vacuum_ip [str] | IP addres of the robot. default: 192.168.8.1
  • Topics
    • /cmd_vel [geometry_msgs::Twist]
    • /scan [sensor_msgs::LaserScan]
    • /odom [nav_msgs::Odometry]
    • /battery_state [sensor_msgs::BatteryState]
    • /front_sonar [sensor_msgs::Range]
    • /wall_distance [sensor_msgs::Range]
    • /cliff/front_right [sensor_msgs::Range]
    • /cliff/front_left [sensor_msgs::Range]
    • /cliff/right [sensor_msgs::Range]
    • /cliff/left [sensor_msgs::Range]
  • Launch Files
    • bringup.launch | starts the xiaomi_bridge_node, loads the robot model, and starts the robot state publisher. Contains the setting of the IP address parameter.
    • move_base.launch | starts the move_base node
    • navigation.launch | starts all needed nodes and loads all parameters for navigation
    • rviz.launch | starts rviz with the provided config file

Navigation

The configuration for the navigation stack is closely oriented to the TurtleBot. You can find more information and tutorials in its ROS wiki. http://wiki.ros.org/Robots/TurtleBot

rviz configuration overview

rviz overview

Known issues

  1. The robot can't be controlled while a bumper is pressed.
  2. Yes, the startup is that hacky. I am gratefully looking for another way to startup the motors and sensors. The best way would be, if that is even possible while the RoboController keeps running.
  3. Preventing the RoboController from running drastically limits the normal functions of the robot. Such as the buttons, the power indicator via LED color and the Mi Home app.

About

This package bridges the internal communication of a Xiaomi Vacuum Cleaner into ROS messages, provides an URDF model and contains configuration files for the navigation stack.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 61.4%
  • CMake 29.6%
  • Dockerfile 6.7%
  • Shell 2.3%
0