ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

nprof50's profile - activity

2020-10-15 09:47:46 -0500 received badge  Famous Question (source)
2020-02-07 00:01:55 -0500 received badge  Notable Question (source)
2019-09-13 16:51:00 -0500 marked best answer Robot_localization result is unpredictable

Hello,

I very recently posted a question about the robot_localization package, and received some very good insight. I managed to fuse my wheel odometry with my IMU readings, but the result is not what I was expecting. I'm noticing a very significant bit of lag in updating the filtered transform. My initial approach was to start out trying to fuse all the data at once, but I quickly learned I needed to try this with individual data (i.e. just velocity of odometry). Hopefully showing my setup and some example videos will help explain the problem I'm having.

In the following example, I'm attempting the simplest setup possible. I only want the EKF to use my odometry's forward velocity value. Here's the setup & config file I'm using for this:

On ros-kinetic:

frequency: 30
sensor_timeout: 0.1
two_d_mode: true
transform_time_offset: 0.0
transform_timeout: 0.0
print_diagnostics: true
publish_tf: true
publish_acceleration: false
use_control: false

#map_frame: map              # Defaults to "map" if unspecified
#odom_frame: odom_raw            # Defaults to "odom" if unspecified
#base_link_frame: base_link_raw  # Defaults to "base_link" if unspecified
#world_frame: odom           # Defaults to the value of odom_frame if unspecified

odom0: odom

#x, y, z, roll, pitch, yaw, vx, vy, vz, vroll, vpitch, vyaw, ax, ay, az
odom0_config: [false, false, false,
               false, false, false,
               true , false, false,
               false, false, false,
               false, false, false]

odom0_queue_size: 10
odom0_nodelay: false
odom0_differential: false
odom0_relative: false
odom0_pose_rejection_threshold: 5
odom0_twist_rejection_threshold: 1

process_noise_covariance: [0.05, 0,    0,    0,    0,    0,    0,     0,     0,    0,    0,    0,    0,    0,    0,
                           0,    0.05, 0,    0,    0,    0,    0,     0,     0,    0,    0,    0,    0,    0,    0,
                           0,    0,    0.06, 0,    0,    0,    0,     0,     0,    0,    0,    0,    0,    0,    0,
                           0,    0,    0,    0.03, 0,    0,    0,     0,     0,    0,    0,    0,    0,    0,    0,
                           0,    0,    0,    0,    0.03, 0,    0,     0,     0,    0,    0,    0,    0,    0,    0,
                           0,    0,    0,    0,    0,    0.06, 0,     0,     0,    0,    0,    0,    0,    0,    0,
                           0,    0,    0,    0,    0,    0,    0.025, 0,     0,    0,    0,    0,    0,    0,    0,
                           0,    0,    0,    0,    0,    0,    0,     0.025, 0,    0,    0,    0,    0,    0,    0,
                           0,    0,    0,    0,    0,    0,    0,     0,     0.04, 0,    0,    0,    0,    0,    0,
                           0,    0,    0,    0,    0,    0,    0,     0,     0,    0.01, 0,    0,    0,    0,    0,
                           0,    0,    0,    0,    0,    0,    0,     0,     0,    0,    0.01, 0,    0,    0,    0,
                           0,    0,    0,    0,    0,    0,    0,     0,     0,    0,    0,    0.02, 0,    0,    0,
                           0,    0,    0,    0,    0,    0,    0,     0,     0,    0,    0,    0,    0.01, 0,    0,
                           0,    0,    0,    0,    0,    0,    0,     0,     0,    0,    0,    0,    0,    0.01, 0,
                           0,    0,    0,    0,    0,    0,    0,     0,     0,    0,    0,    0,    0,    0,    0.015]

initial_estimate_covariance: [1e-9, 0,    0,    0,    0,    0,    0,    0,    0,    0,     0,     0,     0,    0,    0,
                              0,    1e-9, 0,    0,    0,    0,    0,    0,    0 ...
(more)
2019-08-20 07:03:19 -0500 received badge  Popular Question (source)
2019-08-19 15:01:43 -0500 marked best answer Issue with Rosserial Custom Message

I am using ROS Kinetic on Ubuntu 16.04. I've been trying to get a custom message type to work over rosserial_arduino for some time now. I have properly generated the C++ message headers in the package. For reference, here is the custom message type I am planning on using:

# MotorEncoder.msg
int32 leftValue
int32 rightValue
time leftTime
time rightTime

After running catkin_make on the project workspace, I run the source devel/setup.bash command to let ROS know I have messages that need to have generated Arduino-based headers. Then I run the command

rosrun rosserial_client make_libraries ~/Arduino/libraries

This generates the Arduino-based headers which I am able to properly compile and run using this Arduino script:

#include <ros.h>
#include <rover_core/MotorEncoder.h>

ros::NodeHandle nh;
rover_core::MotorEncoder msg;
ros::Publisher pub("/test", &msg);

void setup() {
  // put your setup code here, to run once:
  nh.initNode();
  nh.advertise(pub);
}

void loop() {
  // put your main code here, to run repeatedly:
  nh.spinOnce();
}

I ran the rosserial node after deploying it to the arduino:

 rosrun rosserial_python serial_node.py /dev/ttyUSB0

And I get the output:

[INFO] [1531232541.250369]: ROS Serial Python Node
[INFO] [1531232541.262715]: Connecting to /dev/ttyUSB0 at 57600 baud
[ERROR] [1531232543.413050]: Creation of publisher failed: too many values to unpack

I've tried a bunch of different solutions, but nothing seems to be fixing the problem. I've tried differently structured message types as well. Is something wrong with the process I'm using to generate these? Any help would be greatly appreciated. I'd be more than happy to provide an additional information as well.

2019-04-05 10:28:43 -0500 asked a question move_base local costmap stops working after a while

move_base local costmap stops working after a while Hello, I recently started using the move_base package for our navig

2019-03-29 09:15:28 -0500 marked best answer TurtleBot Bringup Not Connecting to Port

I've been using the TurtleBot3 Waffle with Intel Joule processor for about a month now, and everything has been working very smoothly up until yesterday. Yesterday I followed the same process I usually use to set the TurtleBot up to communicate with a Remote PC:

[Remote PC]

  1. Run roscore

  2. Run roslaunch turtlebot3_bringup turtlebot3_remote.launch

[TurtleBot]

  1. Power up the robot

  2. Run roslaunch turtlebot3_bringup turtlebot3_robot.launch

After I run these steps, I usually am able to publish/subscribe to the various ROS topics the robot publishes/subscribes to. Yesterday I ran this setup and received this console output after launching the turtlebot3_robot.launch on the TurtleBot:

Checking log directory for disk usage. This may take awhile.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.

started roslaunch server http://[hostname]:45747/

SUMMARY
========

PARAMETERS
 * /rosdistro: kinetic
 * /rosversion: 1.12.13
 * /turtlebot3_core/baud: 115200
 * /turtlebot3_core/port: /dev/ttyACM0
 * /turtlebot3_lds/frame_id: base_scan
 * /turtlebot3_lds/port: /dev/ttyUSB0

NODES
  /
    turtlebot3_core (rosserial_python/serial_node.py)
    turtlebot3_diagnostics (turtlebot3_bringup/turtlebot3_diagnostics)
    turtlebot3_lds (hls_lfcd_lds_driver/hlds_laser_publisher)

ROS_MASTER_URI=http://[master_uri]:11311

process[turtlebot3_core-1]: started with pid [2603]
process[turtlebot3_lds-2]: started with pid [2604]
process[turtlebot3_diagnostics-3]: started with pid [2605]
[INFO] [1522418950.044044, 0.000000]: ROS Serial Python Node
[INFO] [1522418950.263477, 0.000000]: Connecting to /dev/ttyACM0 at 115200 baud


And that's as far as it gets. It's getting hung up on connecting the OpenCR port. The only similar scenario to mine that I've seen asked about on here is at the following link: https://github.com/ROBOTIS-GIT/turtlebot3/issues/69. I've followed all the instructions in the answers provided with no successful outcome.

Strangely enough, I let the robot charge overnight, and when I powered it on again this morning, it worked fine for the first 3 or 4 times I ran the boot sequence above. Then I tried to start again after 3-4 successes, and I ran into the same issue. It gets stuck on the connecting step.

I am able to connect to the OpenCR board and flash the turtlebot3_core firmware from the Arduino program, so I know I have connectivity to the board. It's just the turtlebot3_robot.launch sequence that seems to be having trouble with connecting. I'm planning to re-flash the BIOS for the Intel Joule processor being used alongside the OpenCR board. I have tried powering on and off, unplugging and plugging back in every port possible to try and diagnose the issue, but I haven't had any success.

If more information is needed, I would be happy to provide it. Thanks for the help.

2019-03-29 09:15:28 -0500 received badge  Scholar (source)
2019-03-29 09:15:21 -0500 answered a question TurtleBot Bringup Not Connecting to Port

Just to reiterate the solution: Turns out it was a power issue. The battery was too low to power the OpenCR board, so

2019-03-29 09:02:10 -0500 commented question TurtleBot Bringup Not Connecting to Port

Turns out it was a power issue. The battery was too low to power the OpenCR board, so make sure your battery is charged.

2019-03-01 16:34:39 -0500 marked best answer Confused with setup for robot_localization

Hello,

I've just recently started trying to implemented the robot_localization node, and I'm having trouble understanding what all to enable, and what I should be expecting back. Here is my current setup:

  • I have a robot which reports its odometry as (x, y, yaw) based on ticks from the wheel's encoder. It also has an IMU that is reporting (roll, pitch, yaw).
  • I am attempting to fuse the (x, y, yaw) odometry information with the (yaw) information from the IMU.
  • I haven't really tweaked covariances or anything yet, I am mostly using the default values from the template.

What I am not understanding:

  • The wheel odometry is inherently going to be incorrect due to wheel slippage, so while the distance the robot traveled is still pretty accurate, the odometry value for yaw is not to be trusted after a long time. But x, y for odometry are calculated using yaw, so I guess those would be wrong as well. Am I supposed to be taking the result of the robot_localization output and "resetting" the state of the odometry (specifically yaw) of the wheels? I'm not sure if this is something the node handles internally or not.
  • My main concern is that odometry reports being at (5, 5, 45 degrees) after a bit of movement, and the IMU reports yaw is actually 180. Then the X, Y that the odometry reported would also be wrong. How does this node handle a situation like that? Would it somehow understand to adjust the X, Y values based on the IMU yaw reading being the correct one?
  • Should I be passing more information to the node? I am only passing x, y, yaw (odometry), and yaw (IMU). I can't really understand how it can take that information and correct the x, y position relative to what the IMU is saying. If the IMU and odometry disagree entirely on the yaw value, what happens? I.e. what happens to the X and Y values when my odometry says I'm turned 45 degrees and the IMU says I'm at 180 degrees?
  • I saw somewhere that I shouldn't be fusing X, Y of the odometry, instead I should fuse veloicty_x, velocity_y. But in regards to my first bullet point in this list, wouldn't the velocities be subject to the same issues as position? The yaw known by odometrty would be used to calculate the velocities as well, thus giving the same error as the position if the yaw is wrong.
  • When I look at the transform in rviz, I notice that if I lift the robot up off the floor and turn it 180 degrees, the transform does not change. It's almost as if it's completely ignoring the IMU yaw position and setting itself purely with the odometry information. Why would I not see a change in the transform if I pick up the robot and rotate it to change the IMU value?

I don ... (more)

2018-11-16 09:52:48 -0500 received badge  Famous Question (source)
2018-11-16 09:52:48 -0500 received badge  Notable Question (source)
2018-11-16 09:52:48 -0500 received badge  Popular Question (source)
2018-11-15 14:49:36 -0500 received badge  Famous Question (source)
2018-09-03 03:00:04 -0500 received badge  Famous Question (source)
2018-08-23 16:12:04 -0500 received badge  Notable Question (source)
2018-08-22 09:21:55 -0500 received badge  Student (source)
2018-08-21 15:39:44 -0500 received badge  Popular Question (source)
2018-08-21 10:45:02 -0500 edited question Robot_localization result is unpredictable

Robot_localization result is unpredictable Hello, I very recently posted a question about the robot_localization packag

2018-08-21 09:38:29 -0500 asked a question Robot_localization result is unpredictable

Robot_localization result is unpredictable Hello, I very recently posted a question about the robot_localization packag

2018-08-17 02:36:14 -0500 received badge  Notable Question (source)
2018-08-14 14:17:30 -0500 received badge  Supporter (source)
2018-08-14 14:17:26 -0500 received badge  Popular Question (source)
2018-08-13 13:45:26 -0500 asked a question Confused with setup for robot_localization

Confused with setup for robot_localization Hello, I've just recently started trying to implemented the robot_localizati

2018-07-26 17:32:35 -0500 received badge  Famous Question (source)
2018-07-24 14:16:46 -0500 answered a question Issue with Rosserial Custom Message

For anyone else experiencing this issue, I fixed it by adding a delay (of about 50-250) in the main loop after "nh.spinO

2018-07-24 14:15:26 -0500 received badge  Notable Question (source)
2018-07-10 23:49:57 -0500 received badge  Popular Question (source)
2018-07-10 16:26:46 -0500 commented question Issue with Rosserial Custom Message

Yes, but my libraries folder is not ~/sketchbook/libraries. It's ~/Arduino/libraries. Furthermore the IDE complains abou

2018-07-10 09:45:18 -0500 edited question Rosserial Custom Message can't Publish

Rosserial Custom Message can't Publish I've been trying to get a custom message type to work over rosserial_arduino for

2018-07-10 09:45:18 -0500 received badge  Editor (source)
2018-07-10 09:45:15 -0500 edited question Rosserial Custom Message can't Publish

rosserial custom message I've been trying to get a custom message type to work over rosserial_arduino for some time now.

2018-07-10 09:44:50 -0500 asked a question Rosserial Custom Message can't Publish

rosserial custom message I've been trying to get a custom message type to work over rosserial_arduino for some time now.

2018-07-10 09:43:32 -0500 asked a question Issue with Rosserial Custom Message

Issue with Rosserial Custom Message I am using ROS Kinetic on Ubuntu 16.04. I've been trying to get a custom message typ

2018-04-04 08:30:11 -0500 received badge  Enthusiast
2018-03-30 11:56:08 -0500 asked a question TurtleBot Bringup Not Connecting to Port

TurtleBot Bringup Not Connecting to Port I've been using the TurtleBot3 Waffle with Intel Joule processor for about a mo