Comments (4)
I'm not sure how I feel about this. While I acknowledge that this is a useful thing, I'm not sure I want to make it the default behaviour of the trajectory command, since that is a straight interface to the SDK, which I think is the main intent of this driver.
Perhaps implementing something like a forwards_trajectory
(perhaps with a better name) actionserver where we can provide this behaviour would make sense.
from spot_ros.
I do see this, but I'm not saying that it should be the behaviour for all instances: only when the quaternion has not been filled in. I don't think issue is being introduced by the SDK itself: from memory, I think that if you give spot a command in the ODOM_FRAME_NAME
using RobotCommandBuilder
, then it will navigate to it in such a way that it is facing forward. I can check the way the SDK responds to this tomorrow.
The reason I think this is necessary is because the issue is not coming from the sdk, its coming from the transformation that tf2_geometry_msgs.do_transform_pose
is doing: if you transform a pose message with orientation [0, 0, 0, 0], it doesn't come out with orientation [0, 0, 0, 0], before getting handed off to _send_trajectory_command
.
From playing around with it it seems that a [0,0,0,0] quaternion will always get converted into a quaternion which converts to [0,0,pi] roll pitch yaw, hence the spinning.
from spot_ros.
The facing of the robot depends entirely on the specification of the goal point, I think. If you specify a point where it would be more efficient for it to go backwards, then it will do so.
In your spinning example, you were sending goals in a line in the same non-odom frame? I guess your observation of the conversion would match up with that, since the orientation of the robot would be rotated by pi at each point along the line. Fixing the conversion to make it a unit quaternion would at least remove the spinning behaviour, but it would still point along the positive x axis at each point on the line, I think.
from spot_ros.
Yep, all the goals were being sent in the odom
frame.
When the goal is given to spot, a yaw is being specified: on line 1335 of wrapper.py
in spot_wrapper
, the goal is set by specifiying x, y, yaw and frame name. The goal heading is being computed from the quaternion on line 1007 spot_ros
using math_helpers.Quat
.
Interestingly for go to goal stuff the spot sdk uses commands in the odom
frame, so any spot_ros
commands in odom
are being converted from odom
to body
, then back from body
to odom
.
from spot_ros.
Related Issues (20)
- Depth clouds are not published unless there is a subscriber on the image topic for that camera
- Error when starting the driver on ROS Melodic on Ubuntu 18.04.5 LTS on a SpotCORE HOT 5
- Blender File HOT 3
- Is the spot_driver is compatible with any 3D map creator? HOT 1
- Package installation after v1.0.0
- Rviz buttons are enabled if the robot is powered on but someone else has the lease
- Improve comments in code and messages
- Robot not responding to goal commands HOT 3
- OpenSSL Handshake failed HOT 3
- Is anyone else encountering issues with gmapping? HOT 1
- Several nodes not loading on driver launch HOT 7
- joint states frame rate HOT 1
- TF_REPEATED_DATA ignoring data with redundant timestamp HOT 4
- Spot Arm URDF appears to be faulty HOT 3
- Unable to get data from payload camera HOT 6
- 'catkin build' or 'catkin_make' HOT 4
- Duplicated publish_depth_images_callback method HOT 1
- Unable to publish the camera extrinsic parameters HOT 1
- Broken instructions/files HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from spot_ros.