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

JWest's profile - activity

2022-02-25 14:48:10 -0500 received badge  Self-Learner (source)
2022-02-25 14:48:10 -0500 received badge  Teacher (source)
2020-01-27 04:01:26 -0500 received badge  Nice Question (source)
2017-01-24 14:07:30 -0500 received badge  Famous Question (source)
2017-01-24 14:07:30 -0500 received badge  Notable Question (source)
2016-11-12 18:17:22 -0500 received badge  Taxonomist
2016-06-19 08:34:45 -0500 received badge  Popular Question (source)
2016-03-14 10:48:22 -0500 asked a question Using visual landmark to set tf from world to odom

I am using ros indigo with tf for a robot navigation problem. I am new to using tf so I am a bit confused. My robot has a standard encoders/IMU setup and I am using ekf_localization_node to compute my odom frame. That all works great.

My problem is that I have a visual localization system based on aprilTags which occasionally provides a very accurate base_link position with respect to the world frame.

My first thought was to let the aprilTag detection set odom->world as if it were static in between sightings since the aprilTag is the only link between odom->world. The visual localization provides the robot's pose so I tied to transform the localization pose back to the odom frame and then use that to compute the world->odom transform. Then I just publish that transform until a new observation updates it.

Here is my code: (visualLoactionMsg has the robots pose with respect to world).

geometry_msgs::PoseStamped transformedPose;
  geometry_msgs::PoseStamped observedPose;
  observedPose.pose = visualLocationMsg.pose.pose;
  observedPose.header.stamp = ros::Time(0);
  observedPose.header.frame_id = name+"/base_link";
  try{
    listener.transformPose(name+"/odom", observedPose, transformedPose);
    lastTransform.setOrigin(
        tf::Vector3(
          transformedPose.pose.position.x,
          transformedPose.pose.position.y,
          transformedPose.pose.position.z
          ));
    lastTransform.setRotation(
        tf::Quaternion(
          transformedPose.pose.orientation.x,
          transformedPose.pose.orientation.y,
          transformedPose.pose.orientation.z,
          transformedPose.pose.orientation.w)
          );
    lastTransform = lastTransform.inverse();
  }
...
  broadcaster.sendTransform(tf::StampedTransform(
        lastTransform, ros::Time::now(),
        "/world", name+"/odom")
      );

This seems to transform the position correctly, but not the orientation.

This may be in a tutorial somewhere, but I have been struggling with it for a while and figured I would see if anyone has a straightforward approach or could direct me to a working example. any advise would be appreciated.

Thanks, Jonathan West

2015-06-03 03:16:03 -0500 received badge  Famous Question (source)
2015-04-05 11:11:25 -0500 received badge  Notable Question (source)
2015-04-03 09:25:40 -0500 answered a question How do I get a rosbridge image message into OpenCV (C++ or python)

I found a similar question and the (simple) solution The JSON file is encoded with "Base64" so all I needed is a line like

msg.data = msg.data.decode('Base64')

and then everything is fine.

2015-04-03 09:24:08 -0500 received badge  Editor (source)
2015-04-01 09:21:38 -0500 received badge  Popular Question (source)
2015-03-31 17:25:40 -0500 commented question How do I get a rosbridge image message into OpenCV (C++ or python)

Thanks for the reply. Yes I am using image_transport on the server side of the rosbridge and I am trying to use cv_bridge on the PC side. that is part of the call "self.bridge.imgmsg_to_cv2"

2015-03-30 13:04:13 -0500 asked a question How do I get a rosbridge image message into OpenCV (C++ or python)

I have several "robots" running rosbridge servers on raspberry pis and publishing low frame rate images. On a desktop computer, I need to be able to open a websocket to one of the robots and subscribe to its images. I have used mjpegserver for other purposes and it works fine, but in this case I do not want the image to go to a webpage, but rather to OpenCV for some computationally heavy image processing.

I have the rosbridge servers and clients setup and communicating. The client on the PC gets the image messages and they seem to contain the correct data based on simply printing the messages to the console as they arrive. However I am unable to convert the image into an OpenCV mat so that I can process it. It seems that it is simply a message formatting problem, but I can't find a solution or example on the webpage so if someone can point me in the right direction I would greatly appreciate it.

the imgmsg_to_cv2 fails and produces a complaint about unicode. If I start converting unicode to strings then the "encoding" field is ok, but the data complains that it does not have an array interface. Hopefully there is a simple function to translate the message into a compatible format.

Thanks, Jonathan West

2014-12-10 02:46:49 -0500 received badge  Notable Question (source)
2014-12-10 02:46:49 -0500 received badge  Famous Question (source)
2014-07-16 16:23:22 -0500 received badge  Famous Question (source)
2014-07-16 14:21:03 -0500 commented answer Should I use Hydro or Indigo for my new project?

Thanks. My project is going to be running for several years, so I would favor a long term solution. If Indigo is about to be released it sounds like it may be my best best. Are there currently any major features missing from Indigo that I should know about?

2014-07-16 14:18:29 -0500 commented answer Should I use Hydro or Indigo for my new project?

Thanks for the input. To clarify, I will have 2 platforms: The rovers will have small laptops and will only communicate via network, so GUI-less would be fine there. They will not run Gazebo or anything but ROS and whatever is needed to interact with the hardware. There will also be a couple of powerful server computers which will be running ROS and Gazebo. These machines will also be running LAMP servers to allow remote connections and interactions. So I would prefer to have these running the latest ubuntu version. Of course for maintenance reasons I would rather them all be running the same versions and since this is planned to be a multi-year project, I don't want to have to do a major upgrade any time soon!

2014-07-16 09:24:39 -0500 received badge  Notable Question (source)
2014-07-16 03:09:25 -0500 received badge  Popular Question (source)
2014-07-15 22:49:27 -0500 asked a question Should I use Hydro or Indigo for my new project?

Ok, I have downloaded and tried many of the tutorials and I am sold on using ROS/Gazebo for my robotics project at my community college.

I am starting everything from scratch so I would just like some advise on whether I should install Ubuntu 12.04/Hydro or 14.04/Indigo.

I prefer Ubuntu 14.04 but I don't want to commit to Indigo if there are likely to be big problems down the road. So basically I need to know if Indigo is stable enough for me to commit to using it. Since I am at a school, I don't mind doing a bit of Beta testing for the new release, but I can't afford to be fighting with a lot of broken or missing features.

Thanks, Jonathan West Southwest Indian Polytechnic Institute.

2014-07-08 10:03:20 -0500 received badge  Famous Question (source)
2014-07-07 11:20:16 -0500 commented answer What is the best hardware interface system for a new robot project?

Thanks for the comments, Ok, I like the idea of the cheaper and more accessible Arduinos. In my application, I will have a base rover platform with the laptop, batteries, and motor control. The students will design and build "experiments" or additional components to add to the base platform. Will ROS be able to effectively work with several (perhaps 6 or 7) arduinos all connected through a USB hub? If so, then this is probably the way I will go since each student's project can have its own arduino and can be a stand-alone, testable (and affordable) subsystem.

2014-07-07 01:15:28 -0500 received badge  Student (source)
2014-07-07 01:13:59 -0500 received badge  Notable Question (source)
2014-07-06 19:56:33 -0500 received badge  Popular Question (source)
2014-07-06 13:02:32 -0500 asked a question What is the best hardware interface system for a new robot project?

I am developing an educational robot program at a community college using ROS as the software platform and am looking for the best hardware interface for my design. I need something that is easy to implement so that students can add/remove functionality with minimal software implications. My robots will contain laptop computers with ethernet, usb and bluetooth capabilities.

So far I am looking at the RoNex as a possibility, but would like some feedback if this is the best approach? I have also looked at simply buying USB GPIO modules, but I want to keep the custom software to a minimum so simple integration with ROS would be a great feature. We will be interfacing all kinds of analog and digital sensors, encoders, cameras and such.

If anyone has experience in this area, advise would be greatly appreciated.

Thanks, Jonathan West Southwest Indian Polytechnic Institute

2014-06-27 17:53:03 -0500 received badge  Enthusiast
2014-06-26 08:35:48 -0500 commented answer Advise on getting started with a multiple robot project

Thanks for the reply, your points are all very valid. Since it is an educational platform, I am willing to trade high performance for modularity and simplicity. Each semester we will be getting new groups of students so we can't have a mountain of hardware specific code to try to develop/maintain. Students need to be able to find sensors/hardware that they can plug in with a minimal amount of customization. As for the bandwidth, the beauty of our situation is that we are trying to simulate remote operation on Mars, so we are deliberately introducing latency and bandwidth restrictions, both of which make my job easier!

2014-06-25 10:08:17 -0500 received badge  Famous Question (source)
2014-06-25 10:01:14 -0500 received badge  Popular Question (source)
2014-06-25 02:04:02 -0500 received badge  Notable Question (source)
2014-06-25 02:04:02 -0500 received badge  Popular Question (source)
2014-06-24 22:28:50 -0500 answered a question Any experience with iRobot ATRV-JR?

Thanks for the information. Yes, it has the sonar array which I would like to use, but all of the interface is apparently proprietary and quite outdated. My goal is to get a good educational platform up and running so spending a lot of time on old, proprietary interfaces may not be in my best interest.

I was hoping that the interface boards would just be a serial communication protocol that I could implement, but otherwise I may end up stripping it down to the motors and hardware and then replacing the electronics with a laptop and some more modern interfaces.

I will look into the links provided and see if I can make anything work before I give up on the existing system.

Thanks again

J West

2014-06-24 14:28:57 -0500 asked a question Any experience with iRobot ATRV-JR?

I am building a robot testbed at my community college and I inherited an iRobot ATRV-JR platform, but no documentation or other information. Does anyone here have experience or know who I can contact.

Thanks, Jonathan West

2014-06-24 12:54:34 -0500 asked a question Advise on getting started with a multiple robot project

I am an instructor at the Southwest Indian Polytechnic Institute in Albuquerque, NM. We are about to start a large project in which we are building an indoor scale model of a Martian terrain on which we will have students build and test various rovers and robots. I am interested in using ROS and have successfully installed Ubuntu 12.04 and ROS Hydro on a laptop. I ran through several of the tutorials and I like what I see so far.

So I am just looking for some general advise on which tools are the latest and best for my application. Our basic system layout is:

1: A "Rover" will have a small laptop or similar computer onboard running Ubuntu/ROS

2: The rovers will be on a wireless network possibly 5 or 6 at a time each controlled by a different operator through the LAN

3: There will be a Desktop PC to serve as a web server/bridge so the rovers can be controlled/monitored over the LAN and possibly over the web. robotwebtools/rosbridge/ros3djs...

As our program proceeds we will hopefully be able to use ROS/Gazebo and contribute back to it as our students develop models and software to support it.

The program is going to start in July so I want to make sure I get going in the right direction. I need as stable/reliable platform as possible, so I assume the Hydro will be better than Indigo for now unless we will be missing out on too many new features.

Thanks for any feedback and we look forward to working with/joining your community.

Jonathan West