### Install Gazebo Sim (Bash) Source: https://emanual.robotis.com/docs/en/platform/turtlebot3/quick-start Installs Gazebo Sim by adding its repository, updating package lists, and installing the 'gz-harmonic' package. Requires curl, lsb-release, and gnupg. ```bash $ sudo apt-get update $ sudo apt-get install curl lsb-release gnupg $ sudo curl https://packages.osrfoundation.org/gazebo.gpg --output /usr/share/keyrings/pkgs-osrf-archive-keyring.gpg $ echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/pkgs-osrf-archive-keyring.gpg] http://packages.osrfoundation.org/gazebo/ubuntu-stable $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/gazebo-stable.list > /dev/null $ sudo apt-get update $ sudo apt-get install gz-harmonic ``` -------------------------------- ### Install TurtleBot3 Packages and Build Workspace - Bash Source: https://emanual.robotis.com/docs/en/platform/turtlebot3/quick-start Installs necessary TurtleBot3 packages (DynamixelSDK, turtlebot3_msgs, turtlebot3) from GitHub, sets up a ROS 2 workspace, builds it using colcon, and sources the workspace. This is a comprehensive setup for the TurtleBot3. ```bash source /opt/ros/humble/setup.bash mkdir -p ~/turtlebot3_ws/src cd ~/turtlebot3_ws/src/ git clone -b humble https://github.com/ROBOTIS-GIT/DynamixelSDK.git git clone -b humble https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b humble https://github.com/ROBOTIS-GIT/turtlebot3.git sudo apt install python3-colcon-common-extensions cd ~/turtlebot3_ws colcon build --symlink-install echo 'source ~/turtlebot3_ws/install/setup.bash' >> ~/.bashrc source ~/.bashrc ``` -------------------------------- ### Install Navigation2 ROS 2 Humble Packages - Bash Source: https://emanual.robotis.com/docs/en/platform/turtlebot3/quick-start Installs the Navigation2 package and its bringup components for ROS 2 Humble. Navigation2 is a powerful and flexible navigation stack for ROS robots. ```bash $ sudo apt install ros-humble-navigation2 $ sudo apt install ros-humble-nav2-bringup ``` -------------------------------- ### Install TurtleBot3 Core Packages (Debian) Source: https://emanual.robotis.com/docs/en/platform/turtlebot3/quick-start Installs essential TurtleBot3 packages, including the dynamixel-sdk, turtlebot3-msgs, and the main turtlebot3 package, using apt. This is the recommended installation method for pre-compiled packages. ```bash sudo apt install ros-noetic-dynamixel-sdk sudo apt install ros-noetic-turtlebot3-msgs sudo apt install ros-noetic-turtlebot3 ``` -------------------------------- ### Install Gazebo ROS 2 Humble Package - Bash Source: https://emanual.robotis.com/docs/en/platform/turtlebot3/quick-start Installs the Gazebo simulation environment for ROS 2 Humble using apt. Gazebo is a widely used 3D robot simulator that is essential for testing and development in ROS. ```bash $ sudo apt install ros-humble-gazebo-* ``` -------------------------------- ### Build TurtleBot3 Packages from Source (Bash) Source: https://emanual.robotis.com/docs/en/platform/turtlebot3/quick-start Clones the necessary TurtleBot3 repositories (DynamixelSDK, turtlebot3_msgs, turtlebot3) into a workspace, installs colcon build tools, and builds the packages. It then sources the new workspace. ```bash $ source /opt/ros/jazzy/setup.bash $ mkdir -p ~/turtlebot3_ws/src $ cd ~/turtlebot3_ws/src/ $ git clone -b jazzy https://github.com/ROBOTIS-GIT/DynamixelSDK.git $ git clone -b jazzy https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git $ git clone -b jazzy https://github.com/ROBOTIS-GIT/turtlebot3.git $ sudo apt install python3-colcon-common-extensions $ cd ~/turtlebot3_ws $ colcon build --symlink-install $ echo 'source ~/turtlebot3_ws/install/setup.bash' >> ~/.bashrc $ source ~/.bashrc ``` -------------------------------- ### Build and Run Dynamixel SDK Example Code (Linux) Source: https://emanual.robotis.com/docs/en/software/dynamixel/dynamixel_sdk/library_setup/c_linux Steps to build and execute the Dynamixel SDK example C code on Linux. This involves navigating to the example directory, building the executable using 'make', setting serial port permissions, and running the compiled program. ```shell cd [DynamixelSDK folder]/c/example/protocol1.0/read_write/linux32 # OR cd [DynamixelSDK folder]/c/example/protocol1.0/read_write/linux64 make # If there is an error, `$ make clean` then `$ make` again. # To delete the executable file, `$ make clean`. sudo chmod a+rw /dev/ttyUSB0 ./read_write ``` -------------------------------- ### Install ROS 1 Noetic using Script (Bash) Source: https://emanual.robotis.com/docs/en/platform/turtlebot3/quick-start Downloads and executes a script to install ROS 1 Noetic Ninjemys on the remote PC. It includes updating package lists, upgrading existing packages, and then running the installation script. ```bash $ sudo apt update $ sudo apt upgrade $ wget https://raw.githubusercontent.com/ROBOTIS-GIT/robotis_tools/master/install_ros_noetic.sh $ chmod 755 ./install_ros_noetic.sh $ bash ./install_ros_noetic.sh ``` -------------------------------- ### Source ROS 2 Humble Environment - Bash Source: https://emanual.robotis.com/docs/en/platform/turtlebot3/quick-start Adds the ROS 2 Humble environment setup to the bashrc file and sources it. This ensures that ROS 2 commands are available in the terminal. It's a common step for ROS 2 installations. ```bash echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc source ~/.bashrc ``` -------------------------------- ### Install ROS Humble Dependencies for OpenMANIPULATOR-X Source: https://emanual.robotis.com/docs/en/platform/openmanipulator_x/quick_start_guide Installs essential ROS 2 Humble packages required for controlling and simulating the OpenMANIPULATOR-X. This includes control interfaces, MoveIt, Gazebo integration, and controller packages. It ensures all necessary software components are available. ```bash $ sudo apt install \ ros-humble-ros2-control \ ros-humble-moveit* \ ros-humble-gazebo-ros2-control \ ros-humble-ros2-controllers \ ros-humble-controller-manager \ ros-humble-position-controllers \ ros-humble-joint-state-broadcaster \ ros-humble-joint-trajectory-controller \ ros-humble-gripper-controllers \ ros-humble-hardware-interface \ ros-humble-xacro ``` -------------------------------- ### Install ROS Noetic Desktop Full Source: https://emanual.robotis.com/docs/en/platform/openmanipulator_x/quick_start_guide This command installs the ROS Noetic desktop full package, which includes a wide range of ROS components and tools. Ensure you have updated your package list beforehand. ```shell $ sudo apt update $ sudo apt install ros-noetic-desktop-full ``` -------------------------------- ### Install ROS Noetic with a Script Source: https://emanual.robotis.com/docs/en/platform/openmanipulator_x/quick_start_guide This script automates the installation of ROS Noetic on a Linux system. It updates the package list, downloads and executes the installation script, and sets execute permissions. This is the recommended method for beginners. ```shell $ sudo apt update $ wget https://raw.githubusercontent.com/ROBOTIS-GIT/robotis_tools/master/install_ros_noetic.sh $ chmod 755 ./install_ros_noetic.sh $ bash ./install_ros_noetic.sh ``` -------------------------------- ### Install Dependent ROS Packages (Debian) Source: https://emanual.robotis.com/docs/en/platform/turtlebot3/quick-start Installs a list of common ROS packages required for TurtleBot3 operation on a remote PC using apt-get. Ensure your system's ROS distribution is 'noetic'. ```bash sudo apt-get install ros-noetic-joy ros-noetic-teleop-twist-joy \ ros-noetic-teleop-twist-keyboard ros-noetic-laser-proc \ ros-noetic-rgbd-launch ros-noetic-rosserial-arduino \ ros-noetic-rosserial-python ros-noetic-rosserial-client \ ros-noetic-rosserial-msgs ros-noetic-amcl ros-noetic-map-server \ ros-noetic-move-base ros-noetic-urdf ros-noetic-xacro \ ros-noetic-compressed-image-transport ros-noetic-rqt* ros-noetic-rviz \ ros-noetic-gmapping ros-noetic-navigation ros-noetic-interactive-markers ``` -------------------------------- ### Clone OpenManipulator Repository Source: https://emanual.robotis.com/docs/en/platform/openmanipulator_x/quick_start_guide Clones the open_manipulator repository from GitHub using the 'humble' branch. This command requires Git to be installed on the host system. It sets up the necessary project files for further configuration. ```bash $ git clone -b humble https://github.com/ROBOTIS-GIT/open_manipulator.git $ cd open_manipulator ``` -------------------------------- ### Install Apache Web Server Source: https://emanual.robotis.com/docs/en/platform/op3/recovery This command installs the Apache2 web server, which is required for the web_setting_tool. After installation, the default Apache page can be accessed via a web browser at the specified IP address. ```bash $ sudo apt install apache2 ``` -------------------------------- ### Installing Development Tools Source: https://emanual.robotis.com/docs/en/platform/op3/recovery This command installs g++ (the GNU C++ compiler) and git (a version control system). These are fundamental tools for compiling code and managing source code repositories, essential for software development. ```bash $ sudo apt install g++ git ``` -------------------------------- ### Installing ROBOTIS-OP3 Prerequisites Source: https://emanual.robotis.com/docs/en/platform/op3/recovery This command installs essential libraries for the ROBOTIS-OP3, specifically libncurses5-dev for terminal screen handling and v4l-utils for Video4Linux utilities, which are often used for camera interactions. ```bash $ sudo apt install libncurses5-dev v4l-utils ``` -------------------------------- ### Installing Prerequisite Packages for humanoid_navigation Source: https://emanual.robotis.com/docs/en/platform/op3/recovery This series of commands installs several ROS packages that are prerequisites for the humanoid_navigation stack. These include packages for map servers, navigation messages, octomap handling, and related utilities. ```bash $ sudo apt-get install ros-kinetic-map-server $ sudo apt-get install ros-kinetic-humanoid-nav-msgs $ sudo apt-get install ros-kinetic-nav-msgs $ sudo apt-get install ros-kinetic-octomap $ sudo apt-get install ros-kinetic-octomap-msgs $ sudo apt-get install ros-kinetic-octomap-ros $ sudo apt-get install ros-kinetic-octomap-server ``` -------------------------------- ### Initialize and Update ROS Dep Source: https://emanual.robotis.com/docs/en/platform/openmanipulator_x/quick_start_guide These commands initialize the rosdep tool, which helps in installing system dependencies for ROS packages, and then update its sources. This is crucial before building any ROS packages. ```shell $ sudo rosdep init $ rosdep update ``` -------------------------------- ### Install ROS Noetic Dependencies for OpenMANIPULATOR-X Source: https://emanual.robotis.com/docs/en/platform/openmanipulator_x/quick_start_guide Installs required ROS Noetic packages for OpenMANIPULATOR-X, including ROS controllers, Gazebo, MoveIt, and Dynamixel-specific packages. This command is for users working with the older Noetic distribution. ```bash $ source ~/.bashrc $ sudo apt-get install ros-noetic-ros-controllers ros-noetic-gazebo* ros-noetic-moveit* ros-noetic-industrial-core $ sudo apt install ros-noetic-dynamixel-sdk ros-noetic-dynamixel-workbench* $ sudo apt install ros-noetic-robotis-manipulator ``` -------------------------------- ### Clone OpenMANIPULATOR Processing GUI Source Code Source: https://emanual.robotis.com/docs/en/platform/openmanipulator_x/quick_start_guide This command clones the Git repository for the OpenMANIPULATOR processing source code, which is used to set up the Processing GUI tool for easier control of the robot. Ensure you have Git installed. ```shell $ git clone https://github.com/ROBOTIS-GIT/open_manipulator_processing.git ``` -------------------------------- ### Installing robot_upstart ROS Package Source: https://emanual.robotis.com/docs/en/platform/op3/recovery This command installs the robot_upstart ROS package, which is designed to automatically execute basic demos for the ROBOTIS-OP3 robot upon system startup. It simplifies the process of launching essential robot functionalities. ```bash $ sudo apt install ros-kinetic-robot-upstart ``` -------------------------------- ### Install DYNAMIXEL SDK on Linux Source: https://emanual.robotis.com/docs/en/platform/rh_p12_rn/examples Commands to install the DYNAMIXEL SDK on a Linux system. This is a prerequisite for building and running the Linux example. ```bash $ git clone https://github.com/ROBOTIS-GIT/DynamixelSDK $ cd DynamixelSDK/c++/build/linux64 $ sudo make install ``` -------------------------------- ### Setup DYNAMIXEL Workbench Library Build Source: https://emanual.robotis.com/docs/en/software/dynamixel/dynamixel_workbench This sequence of commands navigates to the examples directory of the DYNAMIXEL Workbench library, creates a build directory, configures the build using CMake, and then compiles the project. ```bash cd ~/dynamixel-workbench/dynamixel_workbench_toolbox/examples mkdir -p build && cd build cmake .. make ``` -------------------------------- ### Install ROS 2 Cartographer and Navigation2 (Bash) Source: https://emanual.robotis.com/docs/en/platform/turtlebot3/quick-start Installs the Cartographer and Navigation2 packages for ROS 2 Jazzy using apt-get. These are essential for robot localization and navigation. ```bash $ sudo apt install ros-jazzy-cartographer $ sudo apt install ros-jazzy-cartographer-ros $ sudo apt install ros-jazzy-navigation2 $ sudo apt install ros-jazzy-nav2-bringup ``` -------------------------------- ### Attempt OpenVINO Setup - Python Source: https://emanual.robotis.com/docs/en/platform/op3/advanced_tutorials Attempts to set up the OpenVINO model by checking for existing model files, creating them if necessary, initializing the OpenVINO core, and compiling the model for the selected device. It includes a warmup step to optimize initial inference performance. Dependencies include 'openvino' and custom methods like '_create_openvino_model', '_select_best_device', and '_warmup_model'. ```python def _try_openvino_setup(self) -> bool: """Attempt OpenVINO model setup""" try: # Set model file paths model_dir = Path(f"{self.yolo_model_name}_openvino_model") xml_path = model_dir / f"{self.yolo_model_name}.xml" # Create model if needed if not xml_path.exists(): self.get_logger().info(f"⚙️ Creating OpenVINO model... ({self.yolo_model_name})") self._create_openvino_model() # Re-check after creation if not xml_path.exists(): self.get_logger().warn(f"❌ OpenVINO model creation failed: {xml_path}") return False # Initialize OpenVINO core self.ov_core = ov.Core() # Select device and compile model device = self._select_best_device() self.ov_model = self.ov_core.read_model(str(xml_path)) self.compiled_model = self.ov_core.compile_model(self.ov_model, device) self.device_info = f"OpenVINO {device}" self.is_openvino = True # Warmup self._warmup_model() self.get_logger().info(f"🚀 OpenVINO model loaded | Device: {device}") return True except Exception as e: self.get_logger().warn(f"⚠️ OpenVINO setup failed: {e}") return False ``` -------------------------------- ### Install Cartographer ROS 2 Humble Packages - Bash Source: https://emanual.robotis.com/docs/en/platform/turtlebot3/quick-start Installs Cartographer, a SLAM (Simultaneous Localization and Mapping) library, and its ROS 2 integration for ROS 2 Humble. Cartographer is crucial for robot navigation tasks. ```bash $ sudo apt install ros-humble-cartographer $ sudo apt install ros-humble-cartographer-ros ``` -------------------------------- ### Get Remote PC IP Address Source: https://emanual.robotis.com/docs/en/platform/turtlebot3/quick-start Retrieves the IP address of the remote PC on the current network. This command is essential for configuring ROS network settings. ```bash ifconfig ``` -------------------------------- ### Build TurtleBot3 Packages from Source Source: https://emanual.robotis.com/docs/en/platform/turtlebot3/quick-start Clones the TurtleBot3 source code repositories into a Catkin workspace and builds them. This method is useful for development or when pre-compiled packages are not available or suitable. Requires git and catkin_tools. ```bash mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src/ git clone -b noetic https://github.com/ROBOTIS-GIT/DynamixelSDK.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3.git cd ~/catkin_ws && catkin_make echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc ``` -------------------------------- ### Setup ROS Noetic Environment Variables Source: https://emanual.robotis.com/docs/en/platform/openmanipulator_x/quick_start_guide This section outlines commands to set up the ROS Noetic environment variables in your .bashrc file. It includes sourcing the ROS setup file, creating and building a catkin workspace, and setting ROS master URI and hostname. Note that these commands should not be run if ROS was installed using the script. ```shell $ sudo apt install git $ mkdir -p ~/catkin_ws/src $ catkin_init_workspace $ cd ~/catkin_ws && catkin_make $ echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc $ echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc $ echo "export ROS_MASTER_URI=http://localhost:11311" >> ~/.bashrc $ echo "export ROS_HOSTNAME=localhost" >> ~/.bashrc" $ source ~/.bashrc ``` -------------------------------- ### Run Python Script Example Source: https://emanual.robotis.com/docs/en/software/dynamixel/dynamixel_sdk/basic_read_write_tutorial/basic_read_write_tutorial_python Instructions on how to execute the Python script using the `python3` interpreter from the command line. ```bash $ python3 my_read_write.py ``` -------------------------------- ### Install CycloneDDS for ROS Jazzy Source: https://emanual.robotis.com/docs/en/platform/op3/recovery Installs the CycloneDDS RMW implementation for ROS Jazzy. This package is necessary for using CycloneDDS as the DDS middleware. ```bash sudo apt install ros-jazzy-rmw-cyclonedds-cpp ``` -------------------------------- ### Build and Install SDK (Shell) Source: https://emanual.robotis.com/docs/en/software/dynamixel/dynamixel_sdk/library_setup/cpp_linux These commands are used to navigate to the appropriate build directory based on system architecture and then compile and install the DynamixelSDK. Requires `sudo` for installation. The output indicates success if the library files are generated. ```shell $ cd DynamixelSDK/c++/build/linux64 # for 64-bit systems $ sudo make install ``` -------------------------------- ### Enable and Start Systemd Shutdown Sound Service Source: https://emanual.robotis.com/docs/en/platform/op3/recovery These commands reload the systemd daemon to recognize the new service file, enable the shutdown sound service to start automatically on boot, and start it immediately. ```bash #!/bin/bash systemctl daemon-reload systemctl enable /etc/systemd/system/shutdown_sound.service --now ``` -------------------------------- ### Configure ROBOTIS-OP3 Web Setting Tool Source: https://emanual.robotis.com/docs/en/platform/op3/recovery These commands demonstrate how to copy the web setting tool's HTML files to the web server directory and subsequently access the tool via a web browser. This allows for configuration of the ROBOTIS-OP3 through a web interface. ```bash cd ~/robotis_ws/src/ROBOTIS-OP3-Tools/op3_web_setting_tool sudo cp -r ./html /var/www ``` -------------------------------- ### Install and Configure OpenSSH Server Source: https://emanual.robotis.com/docs/en/platform/op3/recovery This command installs the OpenSSH server package, which allows for secure remote login and file transfer to the PC. After installation, users can connect to the PC using an SSH client. ```bash $ sudo apt install openssh-server ``` -------------------------------- ### Clone and Build OpenMANIPULATOR-X ROS 2 Packages (Humble) Source: https://emanual.robotis.com/docs/en/platform/openmanipulator_x/quick_start_guide This sequence of commands creates a colcon workspace, clones the necessary GitHub repositories for OpenMANIPULATOR-X (DynamixelSDK, open_manipulator, etc.) for the Humble distribution, and then builds them using colcon. This is the primary method for obtaining and compiling the robot's software stack. ```bash $ mkdir -p colcon_ws/src $ cd ~/colcon_ws/src/ $ git clone -b humble https://github.com/ROBOTIS-GIT/DynamixelSDK.git $ git clone -b humble https://github.com/ROBOTIS-GIT/open_manipulator.git $ git clone -b humble https://github.com/ROBOTIS-GIT/dynamixel_hardware_interface.git $ git clone -b humble https://github.com/ROBOTIS-GIT/dynamixel_interfaces.git $ cd ~/colcon_ws && colcon build --symlink-install ``` -------------------------------- ### Install Build-Essential (Linux) Source: https://emanual.robotis.com/docs/en/software/dynamixel/dynamixel_sdk/library_setup/c_linux This command installs the 'build-essential' package, which includes essential tools for compiling software on Linux, such as 'make'. It is required for building the DYNAMIXEL SDK. ```bash sudo apt-get install build-essential ``` -------------------------------- ### ROS 2 Launch Output Example Source: https://emanual.robotis.com/docs/en/platform/openmanipulator_x/ros_controller_package Example output from a successful ROS 2 launch of the OpenMANIPULATOR-X hardware. It shows process startup, robot description loading, and controller initialization. ```text [INFO] [launch]: All log files can be found below /home/open_manipulator_x/.ros/log/2024-12-10-16-13-03-846807-open_manipulator_x-3063 [INFO] [launch]: Default logging verbosity is set to INFO [INFO] [ros2_control_node-1]: process started with pid [3066] [INFO] [robot_state_publisher-2]: process started with pid [3068] [INFO] [spawner-3]: process started with pid [3070] [robot_state_publisher-2] [INFO] [1733814784.140348781] [robot_state_publisher]: got segment dummy_mimic_fix [robot_state_publisher-2] [INFO] [1733814784.140441706] [robot_state_publisher]: got segment end_effector_link [robot_state_publisher-2] [INFO] [1733814784.140450447] [robot_state_publisher]: got segment gripper_left_link [robot_state_publisher-2] [INFO] [1733814784.140455005] [robot_state_publisher]: got segment gripper_right_link [robot_state_publisher-2] [INFO] [1733814784.140459339] [robot_state_publisher]: got segment link1 [robot_state_publisher-2] [INFO] [1733814784.140463495] [robot_state_publisher]: got segment link2 [robot_state_publisher-2] [INFO] [1733814784.140467530] [robot_state_publisher]: got segment link3 [robot_state_publisher-2] [INFO] [1733814784.140471673] [robot_state_publisher]: got segment link4 [robot_state_publisher-2] [INFO] [1733814784.140475662] [robot_state_publisher]: got segment link5 [robot_state_publisher-2] [INFO] [1733814784.140479440] [robot_state_publisher]: got segment world [ros2_control_node-1] [WARN] [1733814784.150297704] [controller_manager]: [Deprecated] Passing the robot description parameter directly to the control_manager node is deprecated. Use '~/robot_description' topic from 'robot_state_publisher' instead. [ros2_control_node-1] [INFO] [1733814784.150762238] [resource_manager]: Loading hardware 'OpenManipulatorXSystem' [ros2_control_node-1] [INFO] [1733814784.163256190] [resource_manager]: Initialize hardware 'OpenManipulatorXSystem' [ros2_control_node-1] transmission_to_joint_matrix_ [ros2_control_node-1] [0][0] 1.000000, [0][1] 0.000000, [0][2] 0.000000, [0][3] 0.000000, [0][4] 0.000000, [ros2_control_node-1] [1][0] 0.000000, [1][1] 1.000000, [1][2] 0.000000, [1][3] 0.000000, [1][4] 0.000000, [ros2_control_node-1] [2][0] 0.000000, [2][1] 0.000000, [2][2] 1.000000, [2][3] 0.000000, [2][4] 0.000000, [ros2_control_node-1] [3][0] 0.000000, [3][1] 0.000000, [3][2] 0.000000, [3][3] 1.000000, [3][4] 0.000000, [ros2_control_node-1] [4][0] 0.000000, [4][1] 0.000000, [4][2] 0.000000, [4][3] 0.000000, [4][4] 1.000000, [ros2_control_node-1] [5][0] 0.000000, [5][1] 0.000000, [5][2] 0.000000, [5][3] 0.000000, [5][4] 0.000000, [ros2_control_node-1] joint_to_transmission_matrix_ [ros2_control_node-1] [0][0] 1.000000, [0][1] 0.000000, [0][2] 0.000000, [0][3] 0.000000, [0][4] 0.000000, [0][5] 0.000000, [ros2_control_node-1] [1][0] 0.000000, [1][1] 1.000000, [1][2] 0.000000, [1][3] 0.000000, [1][4] 0.000000, [1][5] 0.000000, [ros2_control_node-1] [2][0] 0.000000, [2][1] 0.000000, [2][2] 1.000000, [2][3] 0.000000, [2][4] 0.000000, [2][5] 0.000000, [ros2_control_node-1] [3][0] 0.000000, [3][1] 0.000000, [3][2] 0.000000, [3][3] 1.000000, [3][4] 0.000000, [3][5] 0.000000, [ros2_control_node-1] [4][0] 0.000000, [4][1] 0.000000, [4][2] 0.000000, [4][3] 0.000000, [4][4] 1.000000, [4][5] 0.000000, [ros2_control_node-1] [INFO] [1733814784.164000125] [dynamixel_hardware_interface]: port_name /dev/ttyUSB0 / baudrate 1000000 ``` -------------------------------- ### Installing qt_ros ROS Package Source: https://emanual.robotis.com/docs/en/platform/op3/recovery This command installs the qt_ros ROS package, which facilitates integration between ROS and Qt-based applications. This is useful for developing graphical user interfaces for ROS systems. ```bash $ sudo apt install ros-kinetic-qt-ros ``` -------------------------------- ### Install Cross-Compiling Dependencies (Linux) Source: https://emanual.robotis.com/docs/en/software/dynamixel/dynamixel_sdk/library_setup/c_linux These commands install multilib development packages for GCC and G++. These are necessary for cross-compiling the DYNAMIXEL SDK on Linux systems, allowing compilation for different architectures. ```bash sudo apt-get install gcc-multilib g++-multilib ``` -------------------------------- ### Installing ROBOTIS-Utility Applications Source: https://emanual.robotis.com/docs/en/platform/op3/recovery This command installs madplay and mpg321, audio playback utilities that are part of the ROBOTIS-Utility package. These are likely used for sound playback functionalities within the robot's applications. ```bash $ sudo apt install madplay mpg321 ``` -------------------------------- ### Installing dconf-editor and Vino for Desktop Sharing Source: https://emanual.robotis.com/docs/en/platform/op3/recovery These commands install dconf-editor for advanced system configuration and vino, a VNC server, which is used for desktop sharing. These are prerequisites for enabling remote desktop control. ```bash $ sudo apt install dconf-editor $ vino-preferences ``` -------------------------------- ### Compile and Run Firmware Installer (Linux Shell) Source: https://emanual.robotis.com/docs/en/platform/op/development This snippet shows how to compile the firmware_installer executable using 'make' and then run it to install firmware onto a CM-730 controller. It also demonstrates how to specify a particular firmware file. ```shell make ./firmware_installer ./firmware_installer -f cm730_1024.hex ``` -------------------------------- ### Dynamixel SDK Initialization and GroupBulkRead Setup (C#) Source: https://emanual.robotis.com/docs/en/software/dynamixel/dynamixel_sdk/sample_code/csharp_bulk_read_protocol_1_0 Demonstrates the initialization of communication ports and packet handlers, followed by the setup of a group bulk read instance for efficiently reading data from multiple Dynamixel devices simultaneously. This code snippet shows the entry point for interacting with Dynamixels. ```csharp static void Main(string[] args) { // Initialize PortHandler Structs int port_num = dynamixel.portHandler(DEVICENAME); // Initialize PacketHandler Structs dynamixel.packetHandler(); // Initialize Groupbulkread Structs int group_num = dynamixel.groupBulkRead(port_num, PROTOCOL_VERSION); int index = 0; int dxl_comm_result = COMM_TX_FAIL; // Communication result bool dxl_addparam_result = false; // AddParam result bool dxl_getdata_result = false; // GetParam result UInt16[] dxl_goal_position = new UInt16[2]{ DXL_MINIMUM_POSITION_VALUE, DXL_MAXIMUM_POSITION_VALUE }; // Goal position byte dxl_error = 0; // Dynamixel error UInt16 dxl1_present_position = 0; // Present position } ``` -------------------------------- ### Install GCC Compiler (Linux) Source: https://emanual.robotis.com/docs/en/software/dynamixel/dynamixel_sdk/library_setup/c_linux This command installs the GNU GCC compiler using the apt-get package manager on Debian-based Linux distributions like Ubuntu. This is a prerequisite for compiling the DYNAMIXEL SDK. ```bash sudo apt-get install gcc ``` -------------------------------- ### Install and Verify OpenVINO Runtime Source: https://emanual.robotis.com/docs/en/platform/op3/advanced_tutorials Installs the OpenVINO runtime for hardware acceleration and then verifies the available devices that OpenVINO can utilize for inference. ```bash pip install openvino python3 -c "from openvino import Core; print(Core().available_devices)" ``` -------------------------------- ### Install Dynamixel SDK Library (Linux) Source: https://emanual.robotis.com/docs/en/software/dynamixel/dynamixel_sdk/library_setup/c_linux Commands to install the Dynamixel SDK C library to the root directory on Linux. This allows for serial port handling. Includes commands for uninstalling and reinstalling if needed. ```shell sudo make install # If there is an error, you can retry the installation: sudo make uninstall && sudo make install # OR sudo make reinstall # To delete the library file from the root directory: sudo make uninstall ``` -------------------------------- ### Create udev Rules for OpenMANIPULATOR-X Source: https://emanual.robotis.com/docs/en/platform/openmanipulator_x/quick_start_guide This command runs a ROS 2 node provided by the open_manipulator_bringup package to create necessary udev rules. These rules ensure that the system recognizes and has the correct permissions for the OpenMANIPULATOR-X hardware, especially when connected via USB. ```bash $ ros2 run open_manipulator_bringup om_create_udev_rules ``` -------------------------------- ### Installing rosbridge_server and web_video_server ROS Packages Source: https://emanual.robotis.com/docs/en/platform/op3/recovery This command installs rosbridge_server, which enables communication between ROS and external applications via WebSockets, and web_video_server, which streams video from ROS image topics over the web. These are crucial for the web_setting_tool. ```bash $ sudo apt install ros-kinetic-rosbridge-server ros-kinetic-web-video-server ``` -------------------------------- ### Download RH-P12-RN Example Source Code Source: https://emanual.robotis.com/docs/en/platform/rh_p12_rn/examples Instructions for downloading the example source code using Git or direct download. This is the initial step for both Windows and Linux examples. ```bash git clone https://github.com/ROBOTIS-GIT/RH-P12-RN_Example ``` ```bash wget https://github.com/ROBOTIS-GIT/RH-P12-RN_Example/archive/master.zip unzip master.zip ``` -------------------------------- ### Installing Samba for File Sharing Source: https://emanual.robotis.com/docs/en/platform/op3/recovery This command installs Samba and related utilities, which are used to set up file and printer sharing between Linux and Windows systems. It includes the server, common files, and a graphical configuration tool. ```bash $ sudo apt install samba samba-common python-glade2 system-config-samba ```