While creating the new carla ros bridge some extensions became necessary
within CARLA:
The parent property of an actor via python interface is not yet filled.
Therefore, the parent_id of Actors has to be transferred from the CARLA
server via rpc interface.
In addition, actor attributes are published via python interface.
Changes in detail:
carla/rpc/Actor.h:
- add parent_id field to the Actor class for rpc transport
TheNewCarlaServer.cpp:
- fill the parent_id field with the appropriate value
client/ActorList:
- added GetActor() function to get an actor by id
client/ActorVariant:
- added actor_list optional parameter to Get() and MakeActor() function
which allows to query for the parent actor in case the actor_list is
available
client/ActorAttribute:
- solved problem of independent rpc::ActorAttribute* classes by
introduction of ActorAttributeValueAccess class, to be able to reuse
most of the functions for both ActorAttribueValues and ActorAttributes
ActorBlueprintFunctionLibrary:
- extended actor attributes by attribute 'role_name' having {autopilot,
scenario, ego_vehicle} as recommended values for vehicles or
{front,back,...} for sensors to be able to distiguish the different
actors in a meaningful way when transferring to ROS topic names
- extended vehicle attributes by not-modifiable attribute 'object_type'
to be defined at blueprint creation time to provide ground truth
object classification type
PythonAPI:
- libcarla: provide the actor attributes within python as dictionary
- make use of role_name attribute to provide information required for
ROS bridge to distinguish ego vehicle from others
No feature of cmake newer than 3.5 is used. Therefore, we can use
cmake 3.5, which is also standard in Ubuntu 16.04, whereas cmake 3.9
is non-standard.
Depending on the include header sometimes the error is {instrinsic funtion} is not a member of {class name} and other times it seems some Unreal functions as GetObject was replaced by the GetObjectW macro.