<?xml version="1.0" encoding="UTF-8"?>        <rss version="2.0"
             xmlns:atom="http://www.w3.org/2005/Atom"
             xmlns:dc="http://purl.org/dc/elements/1.1/"
             xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
             xmlns:admin="http://webns.net/mvcb/"
             xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
             xmlns:content="http://purl.org/rss/1.0/modules/content/">
        <channel>
            <title>
									Art + Robotics Research LAB Forum - Recent Topics				            </title>
            <link>https://robartx.tech/community/</link>
            <description>Art + Robotics Research LAB Discussion Board</description>
            <language>en-US</language>
            <lastBuildDate>Sat, 13 Jun 2026 06:14:00 +0000</lastBuildDate>
            <generator>wpForo</generator>
            <ttl>60</ttl>
							                    <item>
                        <title>code</title>
                        <link>https://robartx.tech/community/robocall/code/</link>
                        <pubDate>Fri, 27 Feb 2026 19:26:46 +0000</pubDate>
                        <description><![CDATA[from roboclaw_msgs.msg import MotorState
from tcr_roboclaw import Roboclaw
from rclpy.node import Node
from copy import deepcopy

class ElectricalWrapper:

 def __init__(self, node: N...]]></description>
                        <content:encoded><![CDATA[<div>
<div><span>from</span><span> roboclaw_msgs.msg </span><span>import</span><span> MotorState</span></div>
<div><span>from</span><span> tcr_roboclaw </span><span>import</span><span> Roboclaw</span></div>
<div><span>from</span><span> rclpy.node </span><span>import</span><span> Node</span></div>
<div><span>from</span><span> copy </span><span>import</span><span> deepcopy</span></div>
<br /><br />
<div><span>class</span><span> </span><span>ElectricalWrapper</span><span>:</span></div>
<br />
<div><span> </span><span>def</span><span> </span><span>__init__</span><span>(</span><span>self</span><span>, </span><span>node</span><span>: Node, </span><span>driver</span><span>: Roboclaw, </span><span>pub_elec</span><span>: </span><span>bool</span><span>, </span><span>swap_motors</span><span>: </span><span>bool</span><span>):</span></div>
<div><span> </span><span>"""Electrical Wrapper</span></div>
<br />
<div><span> Args:</span></div>
<div><span> node (rclpy.node.Node): ROS 2 node</span></div>
<div><span> driver (tcr_roboclaw.Roboclaw): RoboClaw driver</span></div>
<div><span> pub_elec (bool): Publish electrical data</span></div>
<div><span> swap_motors (bool): Swap the left and right motors</span></div>
<div><span> """</span></div>
<br />
<div><span> </span><span># Node parameters</span></div>
<div><span> </span><span>self</span><span>.driver </span><span>=</span><span> driver</span></div>
<div><span> </span><span>self</span><span>.node </span><span>=</span><span> node</span></div>
<div><span> </span><span>self</span><span>.clock </span><span>=</span><span> </span><span>self</span><span>.node.get_clock()</span></div>
<div><span> </span><span>self</span><span>.logger </span><span>=</span><span> </span><span>self</span><span>.node.get_logger()</span></div>
<div><span> </span><span>self</span><span>.PUB_ELEC </span><span>=</span><span> pub_elec</span></div>
<div><span> </span><span>self</span><span>.swap_motors </span><span>=</span><span> swap_motors</span></div>
<br />
<div><span> </span><span># Electrical data</span></div>
<div><span> </span><span>self</span><span>.timestamp </span><span>=</span><span> </span><span>self</span><span>.clock.now()</span></div>
<div><span> </span><span>self</span><span>.voltage </span><span>=</span><span> </span><span>0.0</span></div>
<div><span> </span><span>self</span><span>.currents </span><span>=</span><span> </span></div>
<div><span> </span><span>self</span><span>.temperature </span><span>=</span><span> </span><span>0.0</span></div>
<div><span> </span><span>self</span><span>.duty_cycles </span><span>=</span><span> </span></div>
<div><span> </span><span>self</span><span>.poll_electrical_data()</span></div>
<br />
<div><span> </span><span># Publishers</span></div>
<div><span> </span><span>self</span><span>.left_elec_pub </span><span>=</span><span> </span><span>self</span><span>.node.create_publisher(</span></div>
<div><span> MotorState,</span></div>
<div><span> </span><span>"/motors/left/electrical"</span><span>,</span></div>
<div><span> </span><span>1</span><span>,</span></div>
<div><span> )</span></div>
<div><span> </span><span>self</span><span>.right_elec_pub </span><span>=</span><span> </span><span>self</span><span>.node.create_publisher(</span></div>
<div><span> MotorState,</span></div>
<div><span> </span><span>"/motors/right/electrical"</span><span>,</span></div>
<div><span> </span><span>1</span><span>,</span></div>
<div><span> )</span></div>
<br />
<div><span> </span><span>def</span><span> </span><span>update_and_publish</span><span>(</span><span>self</span><span>):</span></div>
<div><span> </span><span>"""Update and publish electrical data"""</span></div>
<br />
<div><span> </span><span>if</span><span> </span><span>self</span><span>.poll_electrical_data():</span></div>
<div><span> </span><span>if</span><span> </span><span>self</span><span>.PUB_ELEC:</span></div>
<div><span> </span><span>self</span><span>.publish_elec()</span></div>
<div><span> </span><span>else</span><span>:</span></div>
<div><span> </span><span>self</span><span>.logger.warn(</span><span>"Failed to poll electrical data."</span><span>)</span></div>
<br />
<div><span> </span><span>def</span><span> </span><span>poll_electrical_data</span><span>(</span><span>self</span><span>):</span></div>
<div><span> </span><span>"""Poll electrical data from the Roboclaw"""</span></div>
<br />
<div><span> status1, status2, status3, status4 </span><span>=</span><span> </span><span>0</span><span>, </span><span>0</span><span>, </span><span>0</span><span>, </span><span>0</span></div>
<br />
<div><span> </span><span>try</span><span>:</span></div>
<div><span> </span><span>self</span><span>.timestamp </span><span>=</span><span> </span><span>self</span><span>.clock.now()</span></div>
<div><span> status1, </span><span>*</span><span>currents </span><span>=</span><span> </span><span>self</span><span>.driver.ReadCurrents()</span></div>
<div><span> status2, voltage </span><span>=</span><span> </span><span>self</span><span>.driver.ReadMainBatteryVoltage()</span></div>
<div><span> status3, </span><span>*</span><span>pwms </span><span>=</span><span> </span><span>self</span><span>.driver.ReadPWMs()</span></div>
<div><span> status4, temp </span><span>=</span><span> </span><span>self</span><span>.driver.ReadTemp()</span></div>
<div><span> </span><span>except</span><span> </span><span>Exception</span><span> </span><span>as</span><span> e:</span></div>
<div><span> </span><span>self</span><span>.logger.warn(</span><span>f</span><span>"Read electrical data error: </span><span>{</span><span>str</span><span>(e)</span><span>}</span><span>"</span><span>)</span></div>
<br />
<div><span> </span><span>if</span><span> status1 </span><span>==</span><span> </span><span>1</span><span>:</span></div>
<div><span> </span><span>self</span><span>.currents </span><span>=</span><span> </span></div>
<div><span> </span><span>if</span><span> status2 </span><span>==</span><span> </span><span>1</span><span>:</span></div>
<div><span> </span><span>self</span><span>.voltage </span><span>=</span><span> voltage </span><span>/</span><span> </span><span>10</span></div>
<div><span> </span><span>if</span><span> status3 </span><span>==</span><span> </span><span>1</span><span>:</span></div>
<div><span> </span><span>self</span><span>.duty_cycles </span><span>=</span><span> </span></div>
<div><span> </span><span>if</span><span> status4 </span><span>==</span><span> </span><span>1</span><span>:</span></div>
<div><span> </span><span>self</span><span>.temperature </span><span>=</span><span> temp </span><span>/</span><span> </span><span>10</span></div>
<br />
<div><span> </span><span>return</span><span> status1 </span><span>and</span><span> status2 </span><span>and</span><span> status3 </span><span>and</span><span> status4</span></div>
<br />
<div><span> </span><span>def</span><span> </span><span>publish_elec</span><span>(</span><span>self</span><span>):</span></div>
<div><span> </span><span>"""Publish electrical data in two MotorState messages"""</span></div>
<br />
<div><span> motor_state </span><span>=</span><span> MotorState()</span></div>
<div><span> motor_state.header.stamp </span><span>=</span><span> </span><span>self</span><span>.timestamp.to_msg()</span></div>
<div><span> motor_state.header.frame_id </span><span>=</span><span> </span><span>"base_link"</span></div>
<div><span> motor_state.voltage </span><span>=</span><span> </span><span>self</span><span>.voltage</span></div>
<div><span> motor_state.temperature </span><span>=</span><span> </span><span>self</span><span>.temperature</span></div>
<br />
<div><span> motor_state1, motor_state2 </span><span>=</span><span> deepcopy(motor_state), deepcopy(motor_state)</span></div>
<br />
<div><span> motor_state1.current </span><span>=</span><span> </span><span>self</span><span>.currents</span></div>
<div><span> motor_state1.duty </span><span>=</span><span> </span><span>self</span><span>.duty_cycles</span></div>
<div><span> motor_state2.current </span><span>=</span><span> </span><span>self</span><span>.currents</span></div>
<div><span> motor_state2.duty </span><span>=</span><span> </span><span>self</span><span>.duty_cycles</span></div>
<br />
<div><span> </span><span>if</span><span> </span><span>self</span><span>.swap_motors:</span></div>
<div><span> </span><span>self</span><span>.right_elec_pub.publish(motor_state2)</span></div>
<div><span> </span><span>self</span><span>.left_elec_pub.publish(motor_state1)</span></div>
<div><span> </span><span>else</span><span>:</span></div>
<div><span> </span><span>self</span><span>.right_elec_pub.publish(motor_state1)</span></div>
<div><span> </span><span>self</span><span>.left_elec_pub.publish(motor_state2)</span></div>
</div>]]></content:encoded>
						                            <category domain="https://robartx.tech/community/"></category>                        <dc:creator>eunsun</dc:creator>
                        <guid isPermaLink="true">https://robartx.tech/community/robocall/code/</guid>
                    </item>
				                    <item>
                        <title>Connecting LIDAR while not disconnecting the Roboclaw</title>
                        <link>https://robartx.tech/community/robocall/connecting-lidar-while-not-disconnecting-the-roboclaw/</link>
                        <pubDate>Fri, 20 Feb 2026 19:05:35 +0000</pubDate>
                        <description><![CDATA[When we first connected the LIDAR to Jetson through USB-A (serial), the motors stopped moving and teleop stopped working because the connection of the LIDAR suspended the connection of the o...]]></description>
                        <content:encoded><![CDATA[<p>When we first connected the LIDAR to Jetson through USB-A (serial), the motors stopped moving and teleop stopped working because the connection of the LIDAR suspended the connection of the other USBs. The connection activity can be seen by doing the following commands:</p>
<pre contenteditable="false">ls -l /dev/ttyUSB* /dev/ttyACM* /dev/serial/by-id/ 2&gt;/dev/null
dmesg | tail -n 80</pre>
<p>&nbsp;</p>
<p>The problem is fixed by simply disabling the USB autosuspend on Jetson, by running the following command:</p>
<pre contenteditable="false">sudo bash -c 'echo -1 &gt; /sys/module/usbcore/parameters/autosuspend'</pre>]]></content:encoded>
						                            <category domain="https://robartx.tech/community/"></category>                        <dc:creator>qiancai</dc:creator>
                        <guid isPermaLink="true">https://robartx.tech/community/robocall/connecting-lidar-while-not-disconnecting-the-roboclaw/</guid>
                    </item>
				                    <item>
                        <title>Battery</title>
                        <link>https://robartx.tech/community/main-forum/battery/</link>
                        <pubDate>Sat, 14 Feb 2026 02:55:19 +0000</pubDate>
                        <description><![CDATA[Battery Size Estimation Calculations:Battery specs depend on a few factors including power consumption of the robot, runtime of the robot, and continuous current draw of the robot. Based on ...]]></description>
                        <content:encoded><![CDATA[<p><span style="font-size: 14pt"><strong>Battery Size Estimation Calculations:</strong></span><br />Battery specs depend on a few factors including power consumption of the robot, runtime of the robot, and continuous current draw of the robot. Based on preliminary estimates, power consumption seems to lie around 150W and current draw seems to be around 8A-12A (mostly dependent on the current draw of the Jetson Orin Nano). We aim to run the robot for around 5 hours, however, this increases the amp-hour capacity we need for the battery. Below are some calculations showing how runtime affects battery capacity as well as links to an excel spreadsheet and google doc containing everything I've done so far:</p>
<table dir="ltr" border="1" cellspacing="0" cellpadding="0" data-sheets-root="1" data-sheets-baot="1"><colgroup><col width="100" /><col width="100" /><col width="100" /></colgroup>
<tbody>
<tr>
<td>Runtime (hours)</td>
<td>Watt-Hours (Wh)</td>
<td>Amp-Hours (Ah)</td>
</tr>
<tr>
<td>2</td>
<td>268.8</td>
<td>22.4</td>
</tr>
<tr>
<td>3</td>
<td>403.2</td>
<td>33.6</td>
</tr>
<tr>
<td>4</td>
<td>537.6</td>
<td>44.8</td>
</tr>
<tr>
<td>5</td>
<td>672</td>
<td>56</td>
</tr>
</tbody>
</table>
<p>As you can see, we would need around 50Ah to run the robot for 5 hours continuously, and only 33Ah to run it for 3 hours. It is important to note that these numbers assume the robot is consuming 150W continuously which may not be the case.</p>
<p><strong><span style="font-size: 14pt">Battery Constraints:</span></strong></p>
<p>The height of the battery should be less than 5, 1/2 to be placed in the bottom compartment of the robot. If the battery is any larger, the frame design will have to be changed to accommodate the larger battery size. Width and length of the battery do not seem to matter (as far as I know!). This space constraint incentivizes us to use multiple smaller batteries and hook them up in parallel rather than using one larger battery, however, the capacity of these smaller batteries may not be enough to effectively support the projects needs. Below are some options I currently have in mind:</p>
<p><strong>Option 1) Hook up Four 12V 8Ah batteries from lab (Model # SLA1079)<br /></strong></p>
<p>This would allow the batteries to fit under the frame while maintaining higher Ah capacity. This matches the project needs pretty well and uses batteries that are already owned, however, there are a few problems with it which I've listed below:</p>
<p>      a) With four batteries in parallel we can achieve 36Ah of capacity which can power the robot for only 3 hours continuously<br />          instead of 5.</p>
<p>      b) The current draw of the robot may be too high for the battery to supply continuously at a healthy level. The SLA1079<br />          datasheet provides us with a table that relates battery runtime and continuous current usage over time. It shows that<br />          continuous current should be lower if the battery is used for longer periods of time. This is to ensure battery health. Basically,<br />          if you run the battery for longer, you shouldn't draw as much current from it continuously, otherwise you hurt the battery over<br />          time. This table can be found in the google doc provided (I'd attach an image but I don't think the forum allows me to do that)</p>
<p><strong>Option 2) Hook up Six 12V 8Ah batteries (SLA1079)</strong></p>
<p>Same as option 1, but we increase capacity and current draw which solve problems a) and b). This could work, however, I'm not sure if we can safely connect 6 batteries, it may cause current draw issues. I will look into this.</p>
<p><strong>Option 3) Purchase a larger battery</strong></p>
<p>We could purchase a larger battery (40-60Ah battery to support 5+ hours of continuous use). This would increase the runtime of the robot as well as ensure the current draw of the robot can be easily managed. There are a few issues with this method though:</p>
<p>a) Increases the weight of the robot, potentially reducing mobility</p>
<p>b) The battery would be too large to fit inside the hull, so the hull would have to be modified to accommodate the larger battery.</p>
<p><strong>Other Notes:</strong></p>
<p>This is all the info I have now, but I'll keep doing research and figure out if hooking up 6 12V 8Ah batteries is safe, as well as looking into the current draw of both small and large batteries to see if they can handle the continuous current draw of our system.</p>
<p>Here are links to the excel spreadsheet and google doc with all my work. This information can also be found in the google drive.</p>
<p>Excel:<br />https://docs.google.com/spreadsheets/d/1c61AJ6dTo-TDHi3su-V8-ZS31RmROvyz_vDzj9C5zlU/edit?usp=sharing <br /><br />Google Doc:<br />https://docs.google.com/spreadsheets/d/1c61AJ6dTo-TDHi3su-V8-ZS31RmROvyz_vDzj9C5zlU/edit?usp=sharing </p>]]></content:encoded>
						                            <category domain="https://robartx.tech/community/"></category>                        <dc:creator>cjheller</dc:creator>
                        <guid isPermaLink="true">https://robartx.tech/community/main-forum/battery/</guid>
                    </item>
				                    <item>
                        <title>Using SLAM Toolbox + Nav2 with RPLIDAR A1</title>
                        <link>https://robartx.tech/community/lidar/using-slam-toolbox-nav2-with-rplidar-a1/</link>
                        <pubDate>Fri, 13 Feb 2026 07:15:25 +0000</pubDate>
                        <description><![CDATA[The following must be running correctly:

RPLIDAR publishes /scan (LaserScan)
TF tree is complete: map --&gt; odom --&gt;  base_link --&gt; laser
SLAM toolbox publishes /map and map --&amp;g...]]></description>
                        <content:encoded><![CDATA[<p>The following must be running correctly:</p>
<ul>
<li>RPLIDAR publishes /scan (LaserScan)</li>
<li>TF tree is complete: map --&gt; odom --&gt;  base_link --&gt; laser</li>
<li>SLAM toolbox publishes /map and map --&gt; odom</li>
<li>Nav2 runs without AMCL + without map_server while you are mapping
<ul>
<li>Nav2 expects SLAM to provide those</li>
</ul>
</li>
</ul>
<p><span style="font-size: 12pt"><strong>Bringup: </strong></span></p>
<p><strong>1) Install packages (Jazzy)</strong></p>
<pre contenteditable="false">sudo apt update
sudo apt install -y \
  ros-jazzy-navigation2 ros-jazzy-nav2-bringup \
  ros-jazzy-slam-toolbox \
  ros-jazzy-tf2-ros
</pre>
<p><strong>2) Run RPLIDAR A1 driver (rplidar_ros)</strong></p>
<pre contenteditable="false">ros2 launch rplidar_ros view_rplidar_a1_launch.py</pre>
<p>Confirm the scan topic (in another terminal)</p>
<pre contenteditable="false">ros2 topic list | grep scan
ros2 topic echo /scan --once
</pre>
<p>header.frame_id has to be laser or laser_frame. This frame must match the TF.</p>
<p><strong>3) Provide the TF from base_link --&gt; laser</strong></p>
<p>If not already published with URDF + robot_state_publisher, publish a static transform:</p>
<p>Ex; laser is 0.20m forward, 0.10m up from base_link , no rotation </p>
<p><span style="font-weight: 400">ros2 run tf2_ros static_transform_publisher \</span></p>
<p><span style="font-weight: 400">  0.20 0.0 0.10 0 0 0 base_link laser</span></p>
<p>Check:</p>
<p><span style="font-weight: 400">ros2 run tf2_ros tf2_echo base_link laser</span></p>
<p><strong>4) Check odometry (odom --&gt; base_link)</strong></p>
<p>Odom comes from wheel encoders.</p>
<p>ros2 topic echo /odom --once</p>
<p><span style="font-weight: 400">ros2 run tf2_ros tf2_echo odom base_link</span></p>
<p><strong>5) Start SLAM toolbox (online async)</strong></p>
<p><strong>6) Start Nav2 (navigation only, no AMCL/map_server)</strong></p>
<p><strong>7) Start RViz</strong></p>
<p><strong>8) Save map</strong></p>]]></content:encoded>
						                            <category domain="https://robartx.tech/community/"></category>                        <dc:creator>tanya</dc:creator>
                        <guid isPermaLink="true">https://robartx.tech/community/lidar/using-slam-toolbox-nav2-with-rplidar-a1/</guid>
                    </item>
				                    <item>
                        <title>Autonomous Exploration</title>
                        <link>https://robartx.tech/community/slam-nav2/autonomous-exploration/</link>
                        <pubDate>Fri, 13 Feb 2026 06:53:11 +0000</pubDate>
                        <description><![CDATA[What the exploration node does:
Exploration is not part of Nav2. It is a goal generator:
- subscribes to /map (OccupancyGrid)
- finds frontiers (boundary between known free space and unkn...]]></description>
                        <content:encoded><![CDATA[<p><strong><span style="font-size: 12pt">What the exploration node does:</span></strong></p>
<p>Exploration is not part of Nav2. It is a goal generator:</p>
<p>- subscribes to /map (OccupancyGrid)</p>
<p>- finds frontiers (boundary between known free space and unknown space)</p>
<p>- picks a frontier goal pose</p>
<p>- calls Nav2's NavigateToPose (or waypoint follower) action so Nav2 drives the repeats until no frontiers remain</p>
<p>explorer never publishes /cmd_vel. Nav2 still owns motion.</p>
<p>&nbsp;</p>
<p><strong><span style="font-size: 12pt">Prereqs that must already work:</span></strong></p>
<p>Before installing exploration, make sure:</p>
<ol>
<li>SLAM toolbox is publishing /map</li>
<li>TF chain exists: map --&gt; odom --&gt; base_link --&gt; laser</li>
<li>Nav2 action server exists: navigate_to_pose</li>
</ol>
<p>Check using:</p>
<ul>
<li>
<p><span style="font-weight: 400">ros2 topic echo /map --once</span></p>
</li>
<li>
<p><span style="font-weight: 400"></span><span style="font-weight: 400">ros2 run tf2_ros tf2_echo map odom</span></p>
</li>
<li>
<p><span style="font-weight: 400"></span><span style="font-weight: 400">ros2 action list | grep navigate_to_pose</span></p>
</li>
</ul>
<p>&nbsp;</p>
<p><strong><span style="font-size: 12pt">Install:</span></strong></p>
<strong>1) Install dependencies (Jazzy):</strong>
<p><span style="font-weight: 400">sudo apt update</span></p>
<p><span style="font-weight: 400">sudo apt install -y ros-jazzy-nav2-bringup ros-jazzy-slam-toolbox</span></p>
<p><strong>2) Clone + build in your workspace</strong></p>
<p><span style="font-weight: 400">cd ~/ws_big_robot/src   # or whatever your colcon ws is</span></p>
<p><span style="font-weight: 400">git clone https://github.com/robo-friends/m-explore-ros2.git</span></p>
<p><span style="font-weight: 400">cd ~/ws_big_robot</span></p>
<p><span style="font-weight: 400">rosdep update</span></p>
<p><span style="font-weight: 400">rosdep install -i --from-path src --rosdistro jazzy -y</span></p>
<p><span style="font-weight: 400">colcon build --symlink-install</span></p>
<p><span style="font-weight: 400">source install/setup.bash</span></p>
<p><strong>3) Confirm it installed</strong></p>
<p><span style="font-weight: 400">ros2 pkg list | grep explore</span></p>
<p><span style="font-weight: 400">ros2 run explore_lite explore --help</span></p>
<p><strong>4) How to run it manually (first test)</strong></p>
<p><span style="font-weight: 400">ros2 run explore_lite explore --ros-args --params-file \</span></p>
<p><span style="font-weight: 400">  ~/ws_big_robot/src/m-explore-ros2/explore/config/params.yaml</span></p>
<p><br /><span style="font-weight: 400">It also supports </span><b>stop/resume</b><span style="font-weight: 400"> by publishing Bool to </span><span style="font-weight: 400">explore/resume</span><span style="font-weight: 400">.</span></p>
<p>&nbsp;</p>
<p><strong><span style="font-size: 12pt">Where to embed it in your system (your bringup XML):</span></strong></p>
<p><span style="font-weight: 400">You embed it </span><b>in the same bringup launch</b> <i><span style="font-weight: 400">after</span></i><span style="font-weight: 400"> you start SLAM Toolbox + Nav2.</span></p>
<p><span style="font-weight: 400">In your current bringup file, add this node near the bottom (after navigation include is fine):</span></p>
<p><span style="font-weight: 400">&lt;!-- Exploration node (frontier exploration) --&gt;</span></p>
<p><span style="font-weight: 400">&lt;node pkg="explore_lite"</span></p>
<p><span style="font-weight: 400">      exec="explore"</span></p>
<p><span style="font-weight: 400">      name="explore"</span></p>
<p><span style="font-weight: 400">      output="screen"</span></p>
<p><span style="font-weight: 400">      args="--ros-args --params-file $(find-pkg-share big_robot_navigation)/params/explore.yaml"&gt;</span></p>
<p><span style="font-weight: 400">  &lt;param name="use_sim_time" value="$(var use_sim_time)"/&gt;</span></p>
<p>&nbsp;</p>
<p><span style="font-weight: 400">  &lt;!-- If you use namespaces, avoid absolute topics unless you really mean global --&gt;</span></p>
<p><span style="font-weight: 400">  &lt;remap from="/tf" to="tf"/&gt;</span></p>
<p><span style="font-weight: 400">  &lt;remap from="/tf_static" to="tf_static"/&gt;</span></p>
<p><span style="font-weight: 400">&lt;/node&gt;</span></p>
<p>&nbsp;</p>
<h3><b>Important practical note (startup ordering):</b></h3>
<p><span style="font-weight: 400">explore_lite</span><span style="font-weight: 400"> “starts right away” by default. </span><span style="font-weight: 400"><br /></span><span style="font-weight: 400">If it starts before Nav2 is fully active, it may fail goals.</span></p>
<p><b>Easy workaround:</b><span style="font-weight: 400"> start it embedded, but immediately “pause” exploration and unpause after Nav2 is active:</span></p>
<p><span style="font-weight: 400"># pause</span></p>
<p><span style="font-weight: 400">ros2 topic pub /explore/resume std_msgs/msg/Bool "{data: false}" -1</span></p>
<p>&nbsp;</p>
<p><span style="font-weight: 400"># later, resume</span></p>
<p><span style="font-weight: 400">ros2 topic pub /explore/resume std_msgs/msg/Bool "{data: true}" -1</span></p>
<p>&nbsp;</p>
<h2><span style="font-size: 12pt"><b>Create </b><b>params/explore.yaml</b><b> (starter template):</b></span></h2>
<p><span style="font-weight: 400">Start simple; don’t over-tune until it moves.</span></p>
<p><span style="font-weight: 400"># big_robot_navigation/params/explore.yaml</span></p>
<p><span style="font-weight: 400">explore:</span></p>
<p><span style="font-weight: 400">  ros__parameters:</span></p>
<p><span style="font-weight: 400">    # Common knobs you’ll tune:</span></p>
<p><span style="font-weight: 400">    # - how close is "goal reached"</span></p>
<p><span style="font-weight: 400">    # - how long to wait before declaring stuck</span></p>
<p><span style="font-weight: 400">    # - frontier size thresholds</span></p>
<p><span style="font-weight: 400">    # These names vary slightly across explore implementations, so:</span></p>
<p><span style="font-weight: 400">    # 1) start by copying the repo's explore/config/params.yaml</span></p>
<p><span style="font-weight: 400">    # 2) move it here and edit</span></p>
<p>&nbsp;</p>
<p><b>Best workflow:</b></p>
<ol>
<li style="font-weight: 400"><span style="font-weight: 400">Copy the repo’s default params file into your package</span></li>
<li style="font-weight: 400"><span style="font-weight: 400">Edit locally</span></li>
<li style="font-weight: 400"><span style="font-weight: 400">Point the node at your copy</span></li>
</ol>
<p><span style="font-weight: 400">The repo explicitly shows where the default params live and how to run with them. </span></p>
<p>&nbsp;</p>
<h2><span style="font-size: 12pt"><b>Debugging when it “doesn’t move”</b></span></h2>
<p><span style="font-weight: 400">Most common causes:</span></p>
<ol>
<li style="font-weight: 400"><b>No </b><b>/map</b><span style="font-weight: 400"> (SLAM toolbox not running / wrong scan topic)</span></li>
<li style="font-weight: 400"><span style="font-weight: 400">TF broken (especially </span><span style="font-weight: 400">map→odom</span><span style="font-weight: 400"> or </span><span style="font-weight: 400">odom→base_link</span><span style="font-weight: 400">)</span></li>
<li style="font-weight: 400"><span style="font-weight: 400">Nav2 not actually active (bt_navigator lifecycle not “active”)</span></li>
<li style="font-weight: 400"><span style="font-weight: 400">Topic mismatch (namespaces + you used </span><span style="font-weight: 400">/scan</span><span style="font-weight: 400"> absolute in one place, relative in another)</span></li>
</ol>
<p><span style="font-weight: 400">Also: in RViz, add the frontiers marker if available:</span></p>
<ul>
<li style="font-weight: 400"><span style="font-weight: 400">m-explore-ros2</span><span style="font-weight: 400"> mentions a frontiers marker topic </span><span style="font-weight: 400">explore/frontiers</span><span style="font-weight: 400">.</span></li>
</ul>]]></content:encoded>
						                            <category domain="https://robartx.tech/community/"></category>                        <dc:creator>tanya</dc:creator>
                        <guid isPermaLink="true">https://robartx.tech/community/slam-nav2/autonomous-exploration/</guid>
                    </item>
				                    <item>
                        <title>ICM 20948 Connections to RaspiV</title>
                        <link>https://robartx.tech/community/imu/icm-20948-connections-to-raspiv/</link>
                        <pubDate>Fri, 06 Feb 2026 19:18:23 +0000</pubDate>
                        <description><![CDATA[Connect pins from GND,Vin, SCL and SDA to the GPIO pins on on RaspiV, corresponding to the Gnd, 3.3V, SCL and SDA (GPIO 2 &amp; 3) as required. The images below are the pins necessary for co...]]></description>
                        <content:encoded><![CDATA[<p>Connect pins from GND,Vin, SCL and SDA to the GPIO pins on on RaspiV, corresponding to the Gnd, 3.3V, SCL and SDA (GPIO 2 &amp; 3) as required. The images below are the pins necessary for connections. </p>
<div id="wpfa-457" class="wpforo-attached-file"><a class="wpforo-default-attachment" href="//robartx.tech/wp-content/uploads/wpforo/default_attachments/1770405690-RaspiV_GPIO_Pins.png" target="_blank" title="RaspiV_GPIO_Pins.png"><i class="fas fa-paperclip"></i>&nbsp;RaspiV_GPIO_Pins.png</a></div>]]></content:encoded>
						                            <category domain="https://robartx.tech/community/"></category>                        <dc:creator>joys</dc:creator>
                        <guid isPermaLink="true">https://robartx.tech/community/imu/icm-20948-connections-to-raspiv/</guid>
                    </item>
				                    <item>
                        <title>Roboclaw + ROS2 Setup</title>
                        <link>https://robartx.tech/community/robocall/roboclaw-ros2-setup/</link>
                        <pubDate>Thu, 05 Feb 2026 22:41:06 +0000</pubDate>
                        <description><![CDATA[Roboclaw ROS2 Setup (Norlab Driver – Verified Working on /ws_big_robot/ws_big_robot)
We use Université Laval’s Northern Robotics Lab (Norlab) Roboclaw ROS2 driver.The ROS package uses the P...]]></description>
                        <content:encoded><![CDATA[<h1 data-start="206" data-end="294">Roboclaw ROS2 Setup (Norlab Driver – Verified Working on <code data-start="265" data-end="293">/ws_big_robot/ws_big_robot</code>)</h1>
<p data-start="296" data-end="464">We use <strong data-start="303" data-end="356">Université Laval’s Northern Robotics Lab (Norlab)</strong> Roboclaw ROS2 driver.<br data-start="378" data-end="381" />The ROS package uses the <strong data-start="406" data-end="463">Python driver by Team Chat Robotique (<code data-start="446" data-end="460">tcr-roboclaw</code>)</strong>.</p>
<p data-start="466" data-end="554">This guide reflects what we confirmed working today in <strong data-start="521" data-end="553"><code data-start="523" data-end="551">/ws_big_robot/ws_big_robot</code></strong>.</p>
<hr data-start="556" data-end="559" />
<h2 data-start="561" data-end="622">1) Install Python dependency into the same Python ROS uses</h2>
<p data-start="624" data-end="773">ROS2 console scripts run with the Python that launches the node (often system Python in containers). Install <code data-start="733" data-end="747">tcr-roboclaw</code> in that same environment.</p>
<div class="contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary">
<div class="sticky top-">
<div class="absolute end-0 bottom-0 flex h-9 items-center pe-2">
<div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs"><code class="whitespace-pre! language-bash"><code class="whitespace-pre! language-bash"></code></code>
<pre contenteditable="false">python3 -m pip install -U tcr-roboclaw transforms3d --break-system-packages --index-url https://pypi.org/simple</pre>
</div>
</div>
</div>
</div>
<p data-start="900" data-end="907">Verify:</p>
<div class="contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary">
<div class="overflow-y-auto p-4" dir="ltr">
<pre contenteditable="false">python3 -c "import tcr_roboclaw; print(tcr_roboclaw.__file__)"</pre>
</div>
</div>
<hr data-start="985" data-end="988" />
<h2 data-start="990" data-end="1052">2) Clone repositories into <code data-start="1020" data-end="1052">/ws_big_robot/ws_big_robot/src</code></h2>
<div class="contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary">
<div class="overflow-y-auto p-4" dir="ltr">
<pre contenteditable="false">cd /ws_big_robot/ws_big_robot
mkdir -p src
cd src
git clone https://github.com/norlab-ulaval/roboclaw_ros.git
git clone https://github.com/norlab-ulaval/norlab_custom_interfaces.git</pre>
</div>
</div>
<hr data-start="1249" data-end="1252" />
<h2 data-start="1254" data-end="1300">3) Install required ROS system dependencies</h2>
<div class="contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary">
<div class="sticky top-">
<div class="absolute end-0 bottom-0 flex h-9 items-center pe-2">
<div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs"> </div>
</div>
</div>
<div class="overflow-y-auto p-4" dir="ltr">
<pre contenteditable="false">sudo apt update
sudo apt install -y \ ros-jazzy-diagnostic-updater \ ros-jazzy-tf-transformations \ ros-jazzy-grid-map-msgs</pre>
</div>
</div>
<blockquote data-start="1445" data-end="1501">
<p data-start="1447" data-end="1501"><code data-start="1447" data-end="1462">grid_map_msgs</code> fixes the <code data-start="1473" data-end="1486">falcon_msgs</code> build failure.</p>
</blockquote>
<hr data-start="1503" data-end="1506" />
<h2 data-start="1508" data-end="1565">4) Fix message definitions in Norlab Custom Interfaces</h2>
<p data-start="1567" data-end="1632">The message definitions must match what <code data-start="1607" data-end="1621">roboclaw_ros</code> publishes.</p>
<h3 data-start="1634" data-end="1654">EncoderState.msg</h3>
<div class="contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary">
<div class="overflow-y-auto p-4" dir="ltr">
<pre contenteditable="false">nano /ws_big_robot/ws_big_robot/src/norlab_custom_interfaces/roboclaw_msgs/msg/EncoderState.msg</pre>
</div>
</div>
<p data-start="1765" data-end="1796">Replace the file contents with:</p>
<div class="contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary">
<div class="overflow-y-auto p-4" dir="ltr">
<pre contenteditable="false">std_msgs/Header header
uint32 position # ticks
float32 velocity # ticks/sec
float32 ticks_per_rotation
float32 ticks_per_meter</pre>
</div>
</div>
<h3 data-start="1963" data-end="1981">MotorState.msg</h3>
<div class="contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary">
<div class="overflow-y-auto p-4" dir="ltr">
<pre contenteditable="false">nano /ws_big_robot/ws_big_robot/src/norlab_custom_interfaces/roboclaw_msgs/msg/MotorState.msg</pre>
</div>
</div>
<p data-start="2090" data-end="2121">Replace the file contents with:</p>
<div class="contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary">
<div class="overflow-y-auto p-4" dir="ltr">
<pre contenteditable="false">std_msgs/Header header
float32 current # A
float32 voltage # V
float32 duty # %
float32 temperature # C</pre>
</div>
</div>
<hr data-start="2275" data-end="2278" />
<h2 data-start="2280" data-end="2320">5) Configure the Roboclaw serial port</h2>
<p data-start="2322" data-end="2355">First, find the real device name:</p>
<div class="contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary">
<div class="overflow-y-auto p-4" dir="ltr">
<pre contenteditable="false">ls -l /dev/ttyACM* /dev/ttyUSB* 2&gt;/dev/null</pre>
</div>
</div>
<p data-start="2414" data-end="2435">Then edit the config:</p>
<div class="contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary">
<div class="sticky top-">
<div class="absolute end-0 bottom-0 flex h-9 items-center pe-2">
<div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs"> </div>
</div>
</div>
<div class="overflow-y-auto p-4" dir="ltr">
<pre contenteditable="false">nano /ws_big_robot/ws_big_robot/src/roboclaw_ros/roboclaw_ros/config/roboclaw.yaml</pre>
</div>
</div>
<p data-start="2533" data-end="2537">Set:</p>
<div class="contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary">
<div class="sticky top-">
<div class="absolute end-0 bottom-0 flex h-9 items-center pe-2">
<div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs"> </div>
</div>
</div>
<div class="overflow-y-auto p-4" dir="ltr"><code class="whitespace-pre! language-yaml"><span><span class="hljs-attr">dev:</span> <span class="hljs-string">'/dev/ttyACM0'</span>   <span class="hljs-comment"># must be exact (no wildcards)</span>
<span class="hljs-attr">baud:</span> <span class="hljs-number">38400</span>
</span></code></div>
</div>
<p data-start="2617" data-end="2679">&#x26a0;&#xfe0f; Do <strong data-start="2623" data-end="2630">not</strong> use <code data-start="2635" data-end="2646">/dev/ACM*</code> — Python won’t expand wildcards.</p>
<hr data-start="2681" data-end="2684" />
<h2 data-start="2686" data-end="2736">6) Build only what you need (Roboclaw packages)</h2>
<p data-start="2738" data-end="2782">From the workspace root (NOT inside <code data-start="2774" data-end="2780">src/</code>):</p>
<div class="contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary">
<div class="sticky top-">
<div class="absolute end-0 bottom-0 flex h-9 items-center pe-2">
<div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs"> </div>
</div>
</div>
<div class="overflow-y-auto p-4" dir="ltr">
<pre contenteditable="false">cd /ws_big_robot/ws_big_robot
source /opt/ros/jazzy/setup.bash
rm -rf build install log
colcon build --symlink-install --packages-select roboclaw_msgs roboclaw_ros</pre>
</div>
</div>
<p data-start="2962" data-end="2983">Source the workspace:</p>
<div class="contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary">
<div class="sticky top-">
<div class="absolute end-0 bottom-0 flex h-9 items-center pe-2">
<div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs"> </div>
</div>
</div>
<div class="overflow-y-auto p-4" dir="ltr">
<pre contenteditable="false">source /ws_big_robot/ws_big_robot/install/local_setup.bash</pre>
</div>
</div>
<hr data-start="3057" data-end="3060" />
<h2 data-start="3062" data-end="3121">7) Serial permissions (recommended instead of chmod 777)</h2>
<div class="contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary">
<div class="sticky top-">
<div class="absolute end-0 bottom-0 flex h-9 items-center pe-2">
<div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs"> </div>
</div>
</div>
<div class="overflow-y-auto p-4" dir="ltr">
<pre contenteditable="false">sudo usermod -a -G dialout $USER</pre>
</div>
</div>
<p data-start="3169" data-end="3276">Then log out/in (or reboot).<br data-start="3197" data-end="3200" /><em data-start="3200" data-end="3276">(If you are always running as root in the container, this may not matter.)</em></p>
<hr data-start="3278" data-end="3281" />
<h2 data-start="3283" data-end="3304">8) Launch the node</h2>
<div class="contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary">
<div class="sticky top-">
<div class="absolute end-0 bottom-0 flex h-9 items-center pe-2">
<div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs"> </div>
</div>
</div>
<div class="overflow-y-auto p-4" dir="ltr">
<pre contenteditable="false">source /opt/ros/jazzy/setup.bash
source /ws_big_robot/ws_big_robot/install/local_setup.bash
ros2 launch roboclaw_ros roboclaw_node.launch.py</pre>
</div>
</div>
<hr data-start="3460" data-end="3463" />
<h2 data-start="3465" data-end="3495">9) Verify topics (optional)</h2>
<p data-start="3497" data-end="3517">In another terminal:</p>
<div class="contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary">
<div class="overflow-y-auto p-4" dir="ltr">
<pre contenteditable="false">source /ws_big_robot/ws_big_robot/install/local_setup.bash
ros2 topic list | grep -i roboclaw</pre>
</div>
</div>
<hr data-start="3626" data-end="3629" />]]></content:encoded>
						                            <category domain="https://robartx.tech/community/"></category>                        <dc:creator>eunsun</dc:creator>
                        <guid isPermaLink="true">https://robartx.tech/community/robocall/roboclaw-ros2-setup/</guid>
                    </item>
				                    <item>
                        <title>Install SSD and How to use SSD as storage driver</title>
                        <link>https://robartx.tech/community/jetson/install-ssd-and-how-to-use-ssd-as-storage-driver/</link>
                        <pubDate>Fri, 23 Jan 2026 20:43:27 +0000</pubDate>
                        <description><![CDATA[1. Confirm what’s being used for root
Run this on your Jetson:
df -h /
&nbsp;
You’ll see something like:
Filesystem      Size  Used Avail Use% Mounted on
/dev/mmcblk0p1  119G   42G   7...]]></description>
                        <content:encoded><![CDATA[<h2><b>1. Confirm what’s being used for root</b></h2>
<p><span style="font-weight: 400">Run this on your Jetson:</span></p>
<pre contenteditable="false">df -h /</pre>
<p>&nbsp;</p>
<p><span style="font-weight: 400">You’ll see something like:</span></p>
<p><span style="font-weight: 400">Filesystem      Size  Used Avail Use% Mounted on</span></p>
<p><span style="font-weight: 400">/dev/mmcblk0p1  119G   42G   77G  36% /</span></p>
<p>&nbsp;</p>
<p><span style="font-weight: 400">→ This means </span><span style="font-weight: 400">/</span><span style="font-weight: 400"> (your main OS root) is the </span><b>microSD card</b><span style="font-weight: 400">, not the NVMe.</span></p>
<p><span style="font-weight: 400">Now check whether NVMe is visible:</span></p>
<pre contenteditable="false">lsblk</pre>
<p>&nbsp;</p>
<p><span style="font-weight: 400">Output example:</span></p>
<p><span style="font-weight: 400">NAME         MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS</span></p>
<p><span style="font-weight: 400">mmcblk0      179:0    0  119G  0 disk </span></p>
<p><span style="font-weight: 400">└─mmcblk0p1  179:1    0  118G  0 part /</span></p>
<p><span style="font-weight: 400">nvme0n1      259:0    0  465G  0 disk </span></p>
<p>&nbsp;</p>
<p><span style="font-weight: 400">If </span><span style="font-weight: 400">nvme0n1</span><span style="font-weight: 400"> appears with </span><b>no “MOUNTPOINT”</b><span style="font-weight: 400"> listed, it’s just sitting idle — recognized, but not being used by the OS.</span></p>
<h2><b>2. Check if the NVMe is mounted anywhere</b></h2>
<p><span style="font-weight: 400">Run:</span></p>
<pre contenteditable="false">df -h | grep nvme</pre>
<p>&nbsp;</p>
<p><span style="font-weight: 400">If it returns nothing → the NVMe isn’t mounted yet.</span></p>
<h2><b>3. Use the NVMe as extra storage (recommended, safe)</b></h2>
<p><span style="font-weight: 400">You can easily use the SSD for data, Docker, ROS workspaces, etc.</span><span style="font-weight: 400"><br /></span><span style="font-weight: 400">Here’s the safe and fast setup:</span></p>
<p><span style="font-weight: 400"># Create partition + format</span></p>
<pre contenteditable="false">sudo parted /dev/nvme0n1 -- mklabel gpt

sudo parted -a opt /dev/nvme0n1 mkpart primary ext4 0% 100%

sudo mkfs.ext4 /dev/nvme0n1p1 -L jetson_ssd

</pre>
<p><span style="font-weight: 400"># Create mount point and mount</span></p>
<pre contenteditable="false">sudo mkdir -p /mnt/ssd

sudo mount /dev/nvme0n1p1 /mnt/ssd

</pre>
<p><span style="font-weight: 400"># Make it permanent</span></p>
<pre contenteditable="false">sudo blkid /dev/nvme0n1p1</pre>
<p><span style="font-weight: 400"># copy the UUID from output and edit fstab</span></p>
<pre contenteditable="false">sudo nano /etc/fstab</pre>
<p>&nbsp;</p>
<p><span style="font-weight: 400">Add a line like:</span></p>
<pre contenteditable="false">UUID=&lt;your-uuid&gt; /mnt/ssd ext4 defaults 0 2

</pre>
<p>&nbsp;</p>
<p><span style="font-weight: 400">Then:</span></p>
<pre contenteditable="false">sudo mount -a</pre>
<p>&nbsp;</p>
<p><span style="font-weight: 400">Now you can store things there:</span></p>
<pre contenteditable="false">cd /mnt/ssd

mkdir projects data

</pre>
<h2><b>4. (Optional) Move heavy data to NVMe</b></h2>
<p><span style="font-weight: 400">You can move large folders or services onto the SSD and symlink back:</span></p>
<pre contenteditable="false">sudo systemctl stop docker

sudo mv /var/lib/docker /mnt/ssd/docker

sudo ln -s /mnt/ssd/docker /var/lib/docker

sudo systemctl start docker

</pre>
<p>&nbsp;</p>]]></content:encoded>
						                            <category domain="https://robartx.tech/community/"></category>                        <dc:creator>CES8600</dc:creator>
                        <guid isPermaLink="true">https://robartx.tech/community/jetson/install-ssd-and-how-to-use-ssd-as-storage-driver/</guid>
                    </item>
				                    <item>
                        <title>Navigation and Localization in RViz + Gazebo (with premade map from SLAM)</title>
                        <link>https://robartx.tech/community/slam-nav2/navigation-and-localization-in-rviz-gazebo-with-premade-map-from-slam/</link>
                        <pubDate>Thu, 22 Jan 2026 03:37:36 +0000</pubDate>
                        <description><![CDATA[Map Creation
Launch Gazebo (terminal 1):
ros2 launch big_robot_gazebo launch_sim.launch.xml
Run SLAM Toolbox (terminal 2):
ros2 launch big_robot_navigation map_building.launch.xml use_si...]]></description>
                        <content:encoded><![CDATA[<p><span style="text-decoration: underline"><span style="font-size: 12pt"><b>Map Creation</b></span></span></p>
<p><b>Launch Gazebo (terminal 1):</b></p>
<p><span style="font-weight: 400">ros2 launch big_robot_gazebo launch_sim.launch.xml</span></p>
<p><b>Run SLAM Toolbox (terminal 2):</b></p>
<p><span style="font-weight: 400">ros2 launch big_robot_navigation map_building.launch.xml use_sim_time:=true</span></p>
<p><b>Run RViz (terminal 3):</b></p>
<p><span style="font-weight: 400">ros2 launch big_robot_navigation map_view.launch.xml</span></p>
<p><b>Activate keyboard to move around map (terminal 4): </b></p>
<p><span style="font-weight: 400">ros2 run teleop_twist_keyboard teleop_twist_keyboard</span></p>
<p><b>Save the map (terminal 5): </b></p>
<p><span style="font-weight: 400">ros2 run nav2_map_server map_saver_cli -f &lt;save name&gt;</span></p>
<ul>
<li style="font-weight: 400"><span style="font-weight: 400">Ex; ros2 run nav2_map_server map_saver_cli -f my_map2</span></li>
</ul>
<p>&nbsp;</p>
<p><em>see replies for navigation + localization steps</em></p>]]></content:encoded>
						                            <category domain="https://robartx.tech/community/"></category>                        <dc:creator>tanya</dc:creator>
                        <guid isPermaLink="true">https://robartx.tech/community/slam-nav2/navigation-and-localization-in-rviz-gazebo-with-premade-map-from-slam/</guid>
                    </item>
				                    <item>
                        <title>Set up Jetson Orin Nano ( FireFox issue )</title>
                        <link>https://robartx.tech/community/jetson/set-up-jetson-orin-nano-firefox-issue/</link>
                        <pubDate>Fri, 16 Jan 2026 07:46:44 +0000</pubDate>
                        <description><![CDATA[For running ROS 2, it is recommended to use an external drive (SSD). We purchased the INLAND NVMe
***IMPORTANT**
I installed JetPack 6.1 and 6.2, but neither worked. Both resulted in a blac...]]></description>
                        <content:encoded><![CDATA[<p data-start="116" data-end="239">For running ROS 2, it is recommended to use an external drive (SSD). We purchased the INLAND NVMe:<br data-start="214" data-end="217" /><a class="decorated-link" href="https://a.co/d/hA4pUlw" target="_new" rel="noopener" data-start="217" data-end="239">https://a.co/d/hA4pUlw<span class="ms-0.5 inline-block align-middle leading-none" aria-hidden="true"></span></a></p>
<p data-start="241" data-end="351">***IMPORTANT**</p>
<p data-start="241" data-end="351">I installed JetPack 6.1 and 6.2, but neither worked. Both resulted in a black screen or booted into the shell.</p>
<p data-start="353" data-end="564">Because of this, we need to install an older version, JetPack 5.1.3, first. You need to power on the Jetson and update the internal firmware using JetPack 5.1.3 so that it can properly support JetPack 6.2 later.<br /><br />*****</p>
<ol>
<li data-start="566" data-end="722"> Download JetPack 5.1.3:<br data-start="589" data-end="592" /><a class="decorated-link" href="https://www.jetson-ai-lab.com/initial_setup_jon.html" target="_new" rel="noopener" data-start="592" data-end="644">https://www.jetson-ai-lab.com/initial_setup_jon.html<span class="ms-0.5 inline-block align-middle leading-none" aria-hidden="true"></span></a><br data-start="644" data-end="647" />(This version works, but it is outdated and needs to be updated afterward.)<br /><br /></li>
<li data-start="724" data-end="768"> Download Etcher:<br data-start="740" data-end="743" /><a class="decorated-link" href="https://etcher.balena.io/" target="_new" rel="noopener" data-start="743" data-end="768">https://etcher.balena.io/ </a><br />and Flashing the SD card with 5.1.3 using Etcher.<br /><br /></li>
<li data-start="770" data-end="863">After flashing the SD card with Etcher, power on the Jetson and update the internal firmware.<br /><br /></li>
<li data-start="865" data-end="983">Once the update is complete, shut down the Jetson. Then return to Etcher and flash the SD card again with JetPack 6.2.<br /><br /><span style="color: #993366">Once the SD card is flashed, it is no longer detected on my Mac; it is only recognized on Ubuntu.</span><br /><span style="color: #993366">I also tried connecting to the Jetson via SSH, but it failed.</span></li>
<li data-start="985" data-end="1069">If the correct screen appears after booting, you will need to change the power mode.</li>
</ol>
<p data-start="1134" data-end="1231"> </p>
<p><a href="https://shawnhymel.com/2255/getting-started-with-nvidia-jetson-orin-nano/#:~:text=If%20you%20try%20to%20flash,USB%20cable)%20the%20first%20time."><span style="font-weight: 400">https://shawnhymel.com/2255/getting-started-with-nvidia-jetson-orin-nano/#:~:text=If%20you%20try%20to%20flash,USB%20cable)%20the%20first%20time.</span></a></p>
<p><span style="font-weight: 400"><br /></span><span style="font-weight: 400"><br /></span><span style="font-weight: 400">Firefox is not working. Watch this : </span></p>
<p><a href="https://www.youtube.com/watch?v=x6bccF3xtRE"><span style="font-weight: 400">https://www.youtube.com/watch?v=x6bccF3xtRE</span></a></p>
<p><br style="font-weight: 400" /><br style="font-weight: 400" /></p>]]></content:encoded>
						                            <category domain="https://robartx.tech/community/"></category>                        <dc:creator>CES8600</dc:creator>
                        <guid isPermaLink="true">https://robartx.tech/community/jetson/set-up-jetson-orin-nano-firefox-issue/</guid>
                    </item>
							        </channel>
        </rss>
		